唯倚社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 466|回复: 5

JAVA 线程的几种状态

[复制链接]

59

主题

169

帖子

754

积分

版主

Rank: 7Rank: 7Rank: 7

积分
754
发表于 2017-9-16 17:21:28 | 显示全部楼层 |阅读模式

轻松玩转社区

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

线程可以有六种状态:
  1.New(新创建)
  2.Runnable(可运行)(运行)
  3.Blocked(被阻塞)
  4.Waiting(等待)
  5.Timed waiting(计时等待)
  6.Terminated(被终止)

新创建线程:
 当用new操作符创建一个新线程时,如new Thread(r),该线程还没有开始运行,它的当前状态为new,在线程运行之前还有一些基础工作要做。
可运行线程:
一旦线程调用start方法,线程处于runnable状态。在这个状态下的线程可能正在运行也可能没有运行(也就是说Java规范中正在运行的线程仍然处于可运行状态)。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态。
被阻塞线程:
这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchronized块里别人调用wait() 方法, 也就是线程在等待进入临界区。
等待线程:
  这个状态下是指线程拥有了某个锁之后, 调用了它的wait方法,或者线程调用了join方法 join了另外的线程, 等待被他join的线程执行结束的状态。这里要区分阻塞状态 和等待状态的区别, 一个是在临界点外面等待进入, 一个是在临界点里面wait。
计时等待线程:
  当线程调用带有超时参数的方法时会导致线程进入计时等待状态,带有超市参数的方法有Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await的计时版。
被终止的线程:
1)线程因为run方法正常退出而自然死亡。
  2)因为一个没有捕获的异常终止了run方法而意外死亡。

  线程状态之间的转换:
           


线程的方法:
start()方法用来启动线程对象,使其进入就绪状态
run()方法用来执行线程体中具体的内容

sleep()方法用来使线程进入睡眠状态
suspend()方法用来使线程挂起,要通过resume()方法使其重新启动



1

主题

100

帖子

79

积分

版主

Rank: 7Rank: 7Rank: 7

积分
79
发表于 2017-9-23 09:51:36 | 显示全部楼层
第一次抢到二楼,好紧张啊
回复

使用道具 举报

19

主题

128

帖子

1065

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1065

最佳新人

发表于 2017-9-23 13:43:15 | 显示全部楼层
土豪和我做朋友
回复

使用道具 举报

21

主题

148

帖子

1170

积分

超级版主

Rank: 8Rank: 8

积分
1170

最佳新人

发表于 2017-9-23 20:16:28 | 显示全部楼层
我和我的小伙伴都惊呆了
回复

使用道具 举报

0

主题

108

帖子

249

积分

版主

Rank: 7Rank: 7Rank: 7

积分
249
发表于 2017-9-23 21:58:19 | 显示全部楼层
待我长发及腰,xxxxxx
回复

使用道具 举报

31

主题

151

帖子

812

积分

版主

Rank: 7Rank: 7Rank: 7

积分
812
发表于 2017-9-23 23:33:29 | 显示全部楼层
虎躯一震,菊花一紧
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|weiecn ( 湘ICP备14002058号 )

GMT+8, 2018-12-17 01:52 , Processed in 0.058207 second(s), 9 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表