13-Java中线程相关的基本方法
2023-03-31 10:58:20 时间
Java中线程相关的基本方法
线程相关的基本方法有:wait、notify、notifyAll、sleep、join、yield等
①、线程等待(wait)
- 调用该方法的线程会进入
WAITING
状态,只有等待另外线程的通知或者被中断才会返回,需要注意的是调用wait()
方法后,会释放对象的锁 - 因此,
wait
方法一般用在同步方法或同步代码块中
②、线程睡眠(Sleep)
sleep
导致当前线程休眠,与wait
方法不同的是sleep
不会释放当前占有的锁sleep(long ..)
会导致线程进入TIMED_WAITING
状态
③、线程让步(yield)
yield
方法会使当前线程让出CPU执行时间片,与其他线程一起重新竞争CPU时间片。- 一般情况下,优先级高的线程有更大的可能性成功竞争得到CPU时间片,但这又不是绝对的,又的操作系统对线程优先级并不敏感
④、线程中断(Interrupt)
- 中断一个线程,其本意是给这个线程一个通知信号,会影响这个线程内部的一个中断标识位
- 这个线程本身并不会因此而改变状态(如阻塞,终止等)
⑤、等待其他线程终止(Join)
join()
方法,等待其他线程终止,在当前线程中调用一个线程的join()
方法,则当前线程转为阻塞状态,直到另一个线程结束,当前线程再由阻塞状态变为继续状态,等待CPU的调用
⑥、线程唤醒(notify)
- Object类中的
notify
方法,唤醒在此对象监视器上等待的单个线程;如果所有线程都在此对象上等待,则会选择唤醒其中的一个线程,选择是任意的。 - 并在对实现做出决定时发生,线程通过调用其中一个
wait()
方法,在对象的监视器上等待,直到当前线程放弃此对象上的锁定,才能继续执行被唤醒的线程 - 被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争。
- 类似的方法还有
notifyAll()
,唤醒在此监视器上等待的所有线程
相关文章
- 软件工程师必备的五种生产力增强方式与实践
- 一篇带给你SpringBoot + Spring Security入门
- 当你读代码时,你的大脑在做什么?
- 您需要知道的有关Selenium云端测试都在这里
- 还不懂Docker?一个故事安排的明明白白
- 速度数百倍之差,有人断言KNN面临淘汰,更快更强的ANN将取而代之
- 拥抱云原生,如何将开源项目用k8s部署?
- 为什么不建议使用 Time.Sleep 实现定时功能?
- 谁还不懂分布式系统性能调优,请把这篇文章甩给他~
- 都说代码注释是程序员必备技能,但是你这注释也太奇葩了吧!
- 数学好=编程能力强?MIT新发现:二者激活大脑区域并不同
- 算法模型自动超参数优化方法
- 2020征文-鸿蒙开发板6.WiFi IoT智能家居套件 - 温度传感器和OLED实践
- 一篇带给你Kubernetes 实用技巧
- 一文搞懂 CountDownLatch 用法和源码!
- 定时任务实现原理详解
- 面试官:Mybatis里的设计模式有哪些?我一口气答了8种
- 业务层,到底需不需要服务化?
- 跨域请求产生错误的原因及处理方法
- Canvas入门实战之实现一个图形验证码