开发者社区> 龙哥手记> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

线程有哪些状态与影响的命令

简介: 笔记
+关注继续查看


线程有5种状态

  1. new,创建线程,尚未启动
  2. Runable,此状态的线程有可能正在执行,也有可能正在等待cpu为它分配时间片
  3. waiting,处于此状态的线程不会被分配时间片,必须要等待被其他线程显式的唤醒,notify或notify all
  4. timed waiting ,处于此状态的线程不会被分配时间片,不过无须等待其它线程显式的唤醒,在一定时间后会由系统自动唤醒
  5. blocked,线程被阻塞了,必须要等待获取锁
  6. terminated,线程已执行结束,如一个线程的run()函数执行完毕后线程就进入死亡状态

影响的命令:

  • run、start
    需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由Java的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。
  • wait
    当前线程暂停执行并释放对象锁标志,让其他线程可以进入Synchronized数据块,当前线程被放入对象等待池中
  • notify
    唤醒一个线程
  • notifyAll
    唤醒所有线程
  • sleep
    休眠一段时间后,会自动唤醒。但它并不释放对象锁。也就是如果有Synchronized同步块,其他线程仍然不能访问共享数据。注意该方法要捕获异常
  • join
    当前线程停下来等待,直至另一个调用join方法的线程终止,线程在被激活后不一定马上就运行,而是进入到可运行线程的队列中
  • yield
    停止当前线程,让同等优先权的线程运行。如果没有同等优先权的线程,那么yield()方法将不会起作用
  • daemon

操会作系统维护一个ready queue(就绪线程队列),某一时刻cpu只为ready queue中位于队列头部的线程服务。

参考资料:

http://www.jianshu.com/p/c9f847101fae

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java 几种线程状态之间的相互关系
Java Doc 里通过一个枚举类型 Enum<Thread.State> 来定义。
32 0
【CuteJavaScript】GraphQL真香入门教程 上
【CuteJavaScript】GraphQL真香入门教程 上
34 0
Shell常用命令教程
1.打印当前目录 命令:pwd pwd命令图示.png 2.获取当前计算机的名称 命令:hostname hostname命令图示.png Win10修改计算机名称的方法: 修改计算机名称1.png 修改计算机名称2.png 修改计算机名称3.png 完成上面3步之后,多次点击确定并重启电脑就可以完成修改计算机名。
906 0
线程的状态转换
线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 当执行new Thread(Runnabler)后,新创建出来的线程处于new状态,这种线程不可能执行 当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。
946 0
+关注
龙哥手记
微信搜索「龙哥手记」,回复关键字:见面礼
246
文章
382
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载