java15(多线程--01 thread类)

2019-01-11  本文已影响17人  机智的老刘明同志

进程:

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

线程:

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

主线程:

        java虚拟机启动的时候会有一个进程java.exe。该进程中至少一个线程负责java程序的执行。而且这个线程运行的代码存在与main方法中


创建多线程:

 1.继承thread类  

        ①定义类继承Thread

        ②复写Thread类中的run方法

        ③调用线程的start方法(该方法有两个作用:启动线程,调用run方法)                                

        我们多次执行上面的代码发现每一次的运行结果都不相同。这是因为多个线程都会获取cpu的执行权。cpu执行到谁, 谁就运行。在某一时刻,只能有一个程序运行(多核除外)。cpu在做快速的切换,以达到看上去是同时运行的效果。我们可以形象的把多线程的运行看做 是相互抢夺cpu的执行权

        这就是多线程的一个特性:随机性

        至于上图为什么要覆盖run方法呢?

        thread类用于描述进程,该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run方法。也就是说thread类中的run方法,用于存储线程要运行的代码


线程的生命周期:

        1. 新建状态,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值

        2. 就绪状态,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行

        3. 运行状态,如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态

        4. 阻塞状态,当处于运行状态的线程失去所占用资源之后,便进入阻塞状态。阻塞状态又分为以下三种

                等待阻塞:运行状态中的线程执行wait()方法,使本线程进入到等待阻塞状态;

                同步阻塞 -- 线程在获取synchronized同步锁失败(因为锁被其它线程所占用),它会进入同步阻塞状态;

                其他阻塞 -- 通过调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态。

        5 消亡状态

自定义线程名称:

        实际上,线程默认名称从 Thread0开始逐步递增,当然我们也可以自定义线程名称

        static Thread currentThread()  获取当前线程对象

        getName()  获取线程名称

        设置线程名称:setName或者构造函数

上一篇 下一篇

猜你喜欢

热点阅读