【java并发】 --wait与notify原理

重量级锁通过对象内部的监视器(monitor)实现,其中monitor的本质是依赖于底层操作系统的Mutex Lock实
现,操作系统实现线程之间的切换需要从用户态到内核态的切换,切换成本非常高。前面我们在讲Java对象头的时候,讲到了monitor这个对象,在hotspot虚拟机中,通过ObjectMonitor类来实现monitor。他的锁的获取过程的体现会简单很多.
在这里插入图片描述

wait 和notify

wait和notify是用来让线程进入等待状态以及使得线程唤醒的两个操作
wait()必须被synchronized来使用,

public class ThreadWait extends Thread{
   
private Object lock;
public ThreadWait(Object lock) {
   
   this
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Java中,wait()、notify()和interrupt()是用于线程之间进行通信和控制的方法。 wait()方法被调用时,线程会进入等待状态,直到其他线程调用相同对象的notify()方法来唤醒它。在引用中的示例中,子线程t在调用OBJ.wait()方法后进入等待状态,直到主线程调用t.interrupt()方法来中断它。 notify()方法用于唤醒一个正在等待的线程。在引用中的示例中,t2线程在synchronized块中调用了Lock.notify()方法来唤醒等待的t1线程。 interrupt()方法用于中断一个线程的执行。当线程被中断时,它会抛出InterruptedException异常,可以在catch块中处理这个异常。在引用的示例中,t.interrupt()方法被调用来中断t线程的等待状态。 总结起来,wait()方法使线程进入等待状态,notify()方法用于唤醒等待的线程,而interrupt()方法则用于中断线程的执行。这些方法可以在多线程编程中用于线程之间的协调和控制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Java——多线程高并发系列之wait()、notify()、notifyAll()、interrupt()](https://blog.csdn.net/weixin_43823808/article/details/117697903)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [wait notify interrupt join setDaemon 方法的用法](https://blog.csdn.net/love_zjl/article/details/53057305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值