多线程的sleep、yield、join用法及sleep与wait的区别

Thread类的方法列表:sleep、yield、join用于线程的协作,围绕线程的调度

1、join()等待线程结束:调用join方法的线程,执行结束后才会释放锁主线程main中调用启动线程(调用start),然后调用该线程的join方法,可以达到主线程等待工作线程运行结束后才执行的效果,并且join要在start之后调用。

2、sleep()暂停执行当前线程,让线程睡眠一段时间:挂起线程一段时间,让出CpU,不释放锁

3、interrupt()中断线程:中断当前线程,抛出异常,释放锁

4、yield()暂停线程:使正在执行的线程临时暂停,允许其他线程执行,让出CpU,释放锁,当前线程处于runnable状态(可能别人抢到CpU也可能是它自己抢到)

5、Thread.currentThread().getName()   :获取当前线程名字

 

以下两个方法是Object类定义的方法,java线程间通过他们实现通信

7、wait()使线程等待:挂起当前线程,直到interrupt()方法中断它或者另一个线程调用notify()或notifyAll()方法通知它。(wait方法调用时会释放锁,让出CpU

  wait方法只能在synchronized块或者synchronized方法中使用(因为要先获取锁,wait才能释放锁)

8、notify()或notifyAll():唤醒调用了wait()方法的线程,只能用在同步方法或同步块内部。

  notify与notifyAll区别:notifyAll会让所有处于等待池中的线程全部进入锁池去争夺锁,而notify只会随机让其中一个线程去争夺锁。

posted on   黑子菜园  阅读(205)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示