玩转java多线程学习篇三 线程的状态以及Thread类的API
来源:互联网 发布:房地产网络销售怎么样 编辑:程序博客网 时间:2024/06/15 23:32
一,线程的五大状态
线程从创建,运行到结束大致处于五个状态。新建状态,就绪状态,运行状态,阻塞状态,死亡状态。
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
- 玩转java多线程学习篇四 Thread类的常用API之currentThread,isAlive,sleep,interrupt,isInterrupted,stop
- 玩转java多线程学习篇五 线程的优先级和守护线程
- 线程Thread的生命周期以及状态
- Java多线程Thread类和Runable接口的区别以及线程类详解
- Java多线程与并发学习之(三):线程的各种状态
- 初见Java多线程(三、线程的阻塞状态)
- java多线程---线程的状态
- Java多线程-线程的状态
- Java多线程-线程的状态
- Java多线程学习 (三) Thread的wait()方法执行
- 05-多线程(多线程创建的方式一-继承Thread类)1 2 06-多线程(Thread类中的方法&线程名称) 08-多线程(线程的状态)图解
- Java多线程之线程的五种状态以及状态之间的关系
- Java多线程——实现线程的方式以及线程的状态
- java多线程(三)、线程的生命周期(状态)和线程的操作
- Java多线程之线程生命周期以及线程各个时期的状态
- java 多线程(一)---创建线程的三种方式Thread,Runnable,Callable与Future
- java 多线程:线程状态的转换
- 如何将mysql表结构导出成Excel格式的(并带备注)
- 高级词向量表达
- eclipse中maven默认仓库路径
- 九度 题目1256:找出两个只出现了一次的数字
- sdut1309——不老的传说问题(区间DP)
- 玩转java多线程学习篇三 线程的状态以及Thread类的API
- RN权限工具
- 完整原型链详细图解(构造函数、原型、实例化对象)
- 如何构建基于XX云存储用户的数据集市
- Hive SQL的编译过程
- 73.Docker的中级使用:服务和集群
- iostat
- 使用rman convert和TTS跨平台数据库迁移
- 跌跌撞撞的择业到Java小白学习