多线程 - 线程常见函数的来源/持有锁情况

 

 

线程常见函数 来源类 是否 Static 说明 是否释放锁
sleep() Thread static 只能操作当前线程。时间到后(没有interrupt的情况下),回到“就绪”状态
yield() Thread static 只能操作当前线程。只让出CPU时间片。不让出持有的锁和其他资源(磁盘IO,内存)
join() Thread no 在线程 B 中调用了线程 A 的 Join()方法,直到线程 A 执行完毕后,才会继续 执行线程 B
         
interrupt() Thread no

可以在A 线程里调用B.interrupt(),只是将B线程的interrupted标志位置为true。

  • 一般情况下,毫无影响。由用户自定义代码处理该标志位改变后的情况。
  • 但当B线程正在sleep,wait,join,B线程自己会立即抛InterruptException异常...详情
interrupted() Thread static 只能操作当前线程。会判断当前线程的interrupted状态,并且会重置该状态为false.
isInterrupted() Thread no 可以在A 线程里调用B.isInterrupted().只是返回被检查线程的标志位情况,不会重置。
         
wait() Object no

针对某一个对象调用:object.wait(). 

  • 会释放当前线程持有的锁,而且当前被唤醒后,会重新 去竞争锁,锁竞争到后才会执行 wait 方法后面的代码
notify()/notifyAll() Object no

针对某一个对象调用:object.notify()

  • 调用 notify()系列方法后,对锁无影响,线程只有在 syn 同步代码执行完后才 会自然而然的释放锁
不 (执行完同步代码块才会释放)

posted on   frank_cui  阅读(397)  评论(0编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 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

导航

统计

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