一、线程的状态
1.NEW(新建状态)
创建了Thread对象,但是还没有调用start (内核里还没有创建对应的PCB)
2.RUNNABLE(可运行/就绪状态)
在Java虚拟机中执行的线程处于这种状态,称为可运行线程的线程状态。主要包括两类:(1)线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。(2)可运行状态的线程获得了cpu 时间片,执行程序代码。
3.TERMINATED(终止状态)
表示内核上的pcb已经执行完毕,但是Thread对象还在。
4.WAITING(等待状态)
无限期等待另一个线程执行特定操作的线程处于这种状态。处于等待状态的线程正在等待另一个线程执行特定的操作。一个线程由于调用下列方法之一而处于等待状态:
Object.wait():线程调用了wait()方法等待另一个线程唤醒,没有指定等待的时间。
Thread.join():线程调用了join()方法等待指定的线程终止,没有指定等待的时间。
LockSupport.park()
5.TIMED_WAITING(定时等待)
在指定等待时间内等待另一个线程执行某个操作的线程处于这种状态。调用以下方法之一并且指定的等待时间会使线程处于定时等待状态:
Object.wait(long milliseconds):线程调用了wait()方法等待另一个线程唤醒,指定等待的时间
Thread.join(long milliseconds):线程调用了join()方法等待指定的线程终止,指定等待的时间
Thread.sleep(long milliseconds):让当前线程休眠并指定休眠的时间
6.BLOCKED(阻塞状态)
在等待监视器锁时被阻塞的线程处于这种状态。等待监视器锁的阻塞线程的线程状态。
synchronized同步块/方法
【无标题】
最新推荐文章于 2023-06-21 19:33:49 发布