玩转java多线程学习篇三 线程的状态以及Thread类的API
2017-05-03 14:28
288 查看
一,线程的五大状态
线程从创建,运行到结束大致处于五个状态。新建状态,就绪状态,运行状态,阻塞状态,死亡状态。
1:新建状态(New),新建一个线程 new Thread();
2:就绪状态(Runnable),线程对象被创建后,其它线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待获取cpu使用权。
3:运行状态(Running),就绪状态的线程获得cpu使用权,执行代码。
4:阻塞状态(Blocked),线程由于某种原因放弃cpu使用权,暂时停止运行,直到线程回到就绪状态才有机会转到运行状态。
阻塞的三种情况
(1)等待阻塞 wait ,运行中的线程调用wait()方法,JVM会把该线程放到等待池中。
(2)同步阻塞synchronized,运行线程在获取同步锁时,该同步锁正在被线程B占用,JVM会把该线程放到锁池中,等到线程B释放同步锁时,该线程才有机会获取同步锁。
(3)其它阻塞,运行的线程执行sleep()或join()方法,或者发出I/O请求时候。JVM会把该线程设置为阻塞状态。等到sleep()或join()超时或者发出的I/O请求结束时候,JVM会把该线程重新为就绪状态
5:死亡状态(Dead),线程执行结束或者异常退出后,该线程的生命周期就结束了。
线程状态流程图
二,初步认识线程常用API,下一篇中会进行详解
currentThread():返回正在调用的线程信息
isAlive():判断当前线程是否处于活动状态
sleep():指定毫秒数内让正在执行的线程休眠,暂停执行 Thread.sleep(2000);
getId():取得线程的唯一标识
interrupt():当前线程做一个停止的标记
isInterrupted():判断线程是否已经中断
stop():暴力停止线程
suspend():暂停线程
resume():恢复线程运行
yieId():放弃该线程当前的CPU资源
join():指定的线程加入到当前线程
wait():线程等待,使当前线程主动释放互斥锁,并进入该互斥锁的等待队列
notify():唤醒等待的线程
notifyAll():唤醒所有等待的线程
start():本质的功能是从CPU申请另一个线程空间来执行run()方法中的代码,它和当前线程是两条线程,在相对独立的线程空间运行。
线程从创建,运行到结束大致处于五个状态。新建状态,就绪状态,运行状态,阻塞状态,死亡状态。
1:新建状态(New),新建一个线程 new Thread();
2:就绪状态(Runnable),线程对象被创建后,其它线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待获取cpu使用权。
3:运行状态(Running),就绪状态的线程获得cpu使用权,执行代码。
4:阻塞状态(Blocked),线程由于某种原因放弃cpu使用权,暂时停止运行,直到线程回到就绪状态才有机会转到运行状态。
阻塞的三种情况
(1)等待阻塞 wait ,运行中的线程调用wait()方法,JVM会把该线程放到等待池中。
(2)同步阻塞synchronized,运行线程在获取同步锁时,该同步锁正在被线程B占用,JVM会把该线程放到锁池中,等到线程B释放同步锁时,该线程才有机会获取同步锁。
(3)其它阻塞,运行的线程执行sleep()或join()方法,或者发出I/O请求时候。JVM会把该线程设置为阻塞状态。等到sleep()或join()超时或者发出的I/O请求结束时候,JVM会把该线程重新为就绪状态
5:死亡状态(Dead),线程执行结束或者异常退出后,该线程的生命周期就结束了。
线程状态流程图
二,初步认识线程常用API,下一篇中会进行详解
currentThread():返回正在调用的线程信息
isAlive():判断当前线程是否处于活动状态
sleep():指定毫秒数内让正在执行的线程休眠,暂停执行 Thread.sleep(2000);
getId():取得线程的唯一标识
interrupt():当前线程做一个停止的标记
isInterrupted():判断线程是否已经中断
stop():暴力停止线程
suspend():暂停线程
resume():恢复线程运行
yieId():放弃该线程当前的CPU资源
join():指定的线程加入到当前线程
wait():线程等待,使当前线程主动释放互斥锁,并进入该互斥锁的等待队列
notify():唤醒等待的线程
notifyAll():唤醒所有等待的线程
start():本质的功能是从CPU申请另一个线程空间来执行run()方法中的代码,它和当前线程是两条线程,在相对独立的线程空间运行。
相关文章推荐
- 玩转java多线程学习篇四 Thread类的常用API之currentThread,isAlive,sleep,interrupt,isInterrupted,stop
- 玩转java多线程学习篇一多线程基础
- Java多线程之线程生命周期以及线程各个时期的状态
- java多线程(三)_多线程练习以及线程运行状态简图
- Java多线程之线程的五种状态以及状态之间的关系
- Java多线程之中断线程、中断状态以及间隔输出
- Java多线程——实现线程的方式以及线程的状态
- java线程控制、状态同步、volatile、Thread.interupt以及ConcurrentLinkedQueue
- JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口
- java多线程-线程运行状态-获取线程对象以及名称
- Java多线程:线程状态以及wait(), notify(), notifyAll()
- JAVA之旅(十二)——Thread,run和start的特点,线程运行状态,获取线程对象和名称,多线程实例演示,使用Runnable接口
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- java多线程系列_用Thread类创建线程(2)
- java多线程-线程状态
- Java对多线程的支持(一) - Thread类、Runnable接口、Daemon线程、线程同步
- JAVA多线程并发同步,以及线程终止
- 【java多线程与并发库】---传统java多线程<4> .线程状态及优先级
- 初学Java多线程:用Thread类创建线程