`

导致线程停止的条件

阅读更多

总结一下,一个线程有10种方式可以暂停:

 

1. I/O 阻塞

 

2. 同步阻塞

 

3. 放弃:   

     执行Thread.yield()方法可以让当前线程暂停(不会放弃自己的同步锁),将资源让给具有同等优先

     级的,已经准备好运行的其它线程(也可能是自己)。

 

4. 休眠:

    这是比放弃(Thread.yield())更有力的放弃方式,不管其他线程有没有准备运行,先自己暂停了再说。

 

5. 连接到另一个线程:

     join() :永久等待

     join(long milliseconds) :等待指定时间

 

6.等待一个对象:

    wait():  永久等待

    wait(long milliseconds) : 等待指定时间

 

     相对应的方法是notify() 和 notifyAll() ,这三个方法(wait ,notify ,notify)都要结合 synchronized 使用,即

    只能在同步块或者同步方法中使用。

 

7.被高优先级的线程抢占

 

8. 线程结束: 包含正常结束和抛出异常

 

9.挂起 :这种方式已经废弃不用  

 

10.停止 : 这种方式已经废弃不用  

 

分享到:
评论

相关推荐

    Java并发编程(学习笔记).xmind

    停止基于线程的服务 处理非正常的线程终止 JVM关闭 线程池的定制化使用 任务和执行策略之间的隐性耦合 线程池的大小 配置ThreadPoolExecutor(自定义的线程池) 此处需要注意系统默认提供的...

    roblox-lua-promise:Roblox的承诺实现

    Roblox默认情况下对异步操作进行建模的方式是通过产生(停止)线程,然后在将来的值可用时恢复它。 此模型不理想,因为: 您调用的函数可能会在没有警告的情况下产生,或者有时只会产生,从而导致无法预测和令人...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    21.6 什么会导致调用Finalize方法 21.7 终结揭秘 21.8 Dispose模式:强制对象清理资源 21.9 使用实现了Dispose模式的类型 21.10 C#的using语句 21.11 一个有趣的依赖性问题 21.12 手动监视和控制对象的生存期...

    CLR.via.C#.(中文第3版)(自制详细书签)

    21.6 什么会导致调用Finalize方法 21.7 终结揭秘 21.8 Dispose模式:强制对象清理资源 21.9 使用实现了Dispose模式的类型 21.10 C#的using语句 21.11 一个有趣的依赖性问题 21.12 手动监视和控制对象的生存期 ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    21.6 什么会导致调用Finalize方法 21.7 终结揭秘 21.8 Dispose模式:强制对象清理资源 21.9 使用实现了Dispose模式的类型 21.10 C#的using语句 21.11 一个有趣的依赖性问题 21.12 手动监视和控制对象的生存期...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    21.6 什么会导致调用Finalize方法 21.7 终结揭秘 21.8 Dispose模式:强制对象清理资源 21.9 使用实现了Dispose模式的类型 21.10 C#的using语句 21.11 一个有趣的依赖性问题 21.12 手动监视和控制对象的生存期...

    Java常见面试题208道.docx

    151.rabbitmq 对集群节点停止顺序有要求吗? 十五、Kafka 152.kafka 可以脱离 zookeeper 单独使用吗?为什么? 153.kafka 有几种数据保留的策略? 154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息...

    超级有影响力霸气的Java面试题大全文档

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程...

    java 面试题 总结

    sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程...

    精易模块[源码] V5.15

    2、修正“目录_复制”在线程未初始化,导致对象不能创建的问题,感谢易友【@pp25729391】反馈。 3、修正“类_环境存取->读环境变量”不能读取当前进程环境变量的BUG,感谢易友【@詠不言敗】反馈。 4、修正“文本_...

    精易官方免费模块v3.60版

    进程_ID取模块文件名 先枚举模块得到信息数组,再计次循环 当条件=PID 就返回模块文件名,实际上枚 举到的模块信息数组所有的PID都一样,得到的也就是第一次循环结果,也就是进程名 2.删除“进程_ID取模块路径“,...

    建议购置新服务器请示.docx

    5月6日早上,因教师录入考试成绩用户很集中,使得其中已使用8年的这台服务器不能承受大量并发压力导致系统崩溃卡死,再次启动无法启动成功,经初步诊断硬盘引导扇区损坏。请圣博技术人员来院,并远程咨询正方技术...

    购买服务器请示.docx

    5月6日早上,因教师录入考试成绩用户很集中,使得其中已使用8年的这台服务器不能承受大量并发压力导致系统崩溃卡死,再次启动无法启动成功,经初步诊断硬盘引导扇区损坏。请圣博技术人员来院,并远程咨询正方技术...

    MySQL 5.1参考手册 (中文版)

    全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和...

    mysql官方中文参考手册

    全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和...

    MYSQL中文手册

    全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时...

    MySQL 5.1参考手册中文版

    全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用...

    MySQL 5.1参考手册

    全文停止字 12.7.4. 全文限定条件 12.7.5. 微调MySQL全文搜索 12.8. Cast函数和操作符 12.9. 其他函数 12.9.1. 位函数 12.9.2. 加密函数 12.9.3. 信息函数 12.9.4. 其他函数 12.10. 与GROUP BY子句同时使用的函数和...

    易语言-E2EE互联网服务器套件1.8.5.2

    修复了编译后的一个重大问题导致栈奔溃的问题。 [1.8.3] 优化了 E2EE 内存中同进程库的加载机制,更加可靠。 E2EE程序在内存中永远只保留一个版本,无论何种方式调用E2EE,只要是同进程都使用外层服务器所使用的E2EE...

Global site tag (gtag.js) - Google Analytics