栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java多线程如何使用?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java多线程如何使用?

文章目录
  • 前言
    • 一、概念
          • 1.进程、线程
            • 1.1进程
            • 1.2线程
          • 2.多线程存在的意义
    • 二、多线程的创建(两种方式)
          • 1.继承Thread类
          • 2.定义类实现Runnable接口
          • 3.实现方式和继承方式有什么区别
          • 4.多线程运行的状态
    • 三、领悟


前言 一、概念 1.进程、线程 1.1进程

是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元。

1.2线程

就是进程中一个独立的控制单元,线程在控制着进程的执行,一个进程中至少有一个线程。

举例:Java jvm启动的时候会有一个进程java.exe执行,该进程中至少有一个线程在负责Java程序的运行,而且这个线程运行的代码保存到main方法中,该线程称之为主线程,其中jvm在启动后不仅这一个线程在运行,还有一个垃圾回收的线程在运行。

2.多线程存在的意义

提高代码执行效率。

二、多线程的创建(两种方式) 1.继承Thread类

1.1 定义类继承Thread,复写Thread类中的run方法是为了将自定义的代码存储到run方法中,让线程运行。
1.2 调用线程的start方法,该方法有两个作用:启动线程,调用run方法。
1.3多线程运行的时候,运行结果每一次都不同,因为多个线程都获取cpu的执行权,cpu执行到谁,谁就运行,明确一点,在某一个时刻,只能有一个程序在运行。(多核除外),cpu在做着快速的切换,以到达看上去是同时运行的效果。我们可以形象把多线程的运行行为在互抢cpu的执行权。这就是多线程的一个特性,随机性。谁抢到,谁执行,至于执行多久,cpu说了算。
代码如下(示例):

public class shijian extends Thread{

        public void run() {

            for (int i = 0; i < 60; i++) {

                System.out.println(this.getName() + "demo run---" + i);

            }

        }
}

 public static void main(String[] args) {
        shijian sj=new shijian();//创建一个线程

        sj.start();//开启线程,并执行该线程的run方法

        sj.run(); //仅仅是对象调用方法,而线程创建了但并没有运行

        for (int x = 0; x < 60; x++) {

            System.out.println("Hello World---"+x);

        }
        }
2.定义类实现Runnable接口

2.1 覆盖Runnable接口中的run方法:将线程要运行的代码存放到run方法中
2.2 通过Thread类建立线程对象
2.3 将Runnable接口的子类对象作为实际参数传递给Thread类的构造函数
2.4 调用Thread类的start方法开启线程并调用Runnable接口子类的方法
代码如下(示例):

public class Ticket implements Runnable{
    @Override
    public void run() {
        for(int i = 0; i < 100; i++)
            System.out.println("T1.....running........");
    }
}
//这是两个类
public class test {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        Thread t1 = new Thread(ticket);
        t1.start();
    }
}

3.实现方式和继承方式有什么区别

3.1 实现方式避免了单继承的局限性,在定义线程时建议使用实现方式
3.2 继承Thread类:线程代码存放在Thread子类run方法中
3.3 实现Runnable:线程代码存放在接口的子类run方法中

4.多线程运行的状态

创建线程-运行—sleep()/wait()–冻结—notify()—唤醒
创建线程-运行—stop()—消亡
创建线程-运行—没抢到cpu执行权—临时冻结


三、领悟

只要认真去学习,必定会学会!!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343194.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号