转载

【JAVA SE基础篇】56.线程状态、方法

1.线程状态

新生状态->就绪状态->运行状态->死亡状态

【JAVA SE基础篇】56.线程状态、方法

注:

1.线程死亡后不能重新开启

2.线程阻塞后进入就绪状态

【JAVA SE基础篇】56.线程状态、方法

注:

1.每个线程new一个对象后,都有自己的工作空间,一个工作空间匹配一个线程

2.进入就绪状态的四种方法:start方法,阻塞接触,yield方法,jvm将cpu从本地线程切换到其他线程

3.进入阻塞状态的四种原因:sleep,wait,join,io等操作

4.进入死亡状态的2种原因:代码执行结束,线程强制结束(stop/destory)

2.线程方法

1.sleep():

使线程停止运行一段时间,将处于 阻塞状态

如果调用了sleep方法之后,没有其他等待执行的进程,这个时候当前线程不会马上回复执行

2.join():

阻塞 指定线程等到另一个线程完成以后再继续执行

3.yield():

让当前正在执行线程暂停,不是阻塞线程,而是将线程转入 就绪状态

调用了yield方法之后,如果没有其他等待执行的线程, 此时当前线程就会马上恢复执行

4.setDaemon():

可以将指定的线程设置程后台线程, 守护线程

创建用户线程的线程结束时,后台线程也随之消亡

只能在线程启动之前把它设为后台线程

5.setPriority(int newPriority) getPriority():

线程的优先级代表的是概率

范围从1到10,默认为5

6.stop():

不推荐使用

3.线程停止

不使用JDK提供的stop()/destory()

提供一个boolean型的终止变量,当这个变量置为false,则终止线程运行

例:

【JAVA SE基础篇】56.线程状态、方法

4.线程暂停

sleep(时间)指定当前线程阻塞的毫秒数

sleep存在异常InterruptedException

sleep时间达到后线程进入就绪状态

sleep可以模拟网络延时,倒计时等

每一个对象都有一个锁,sleep不会释放锁

例:

【JAVA SE基础篇】56.线程状态、方法

原文  https://www.maiyewang.com/archives/102168
正文到此结束
Loading...