初学多线程使用中踩过的坑

在这里插入图片描述

wait使用,外面没有加synchronized ,导致频繁报错。
IllegalMonitorStateException - 如果当前线程不是对象监视器的所有者报异常。
wait使用时会释放锁。并且使当前线程休眠,所以如果没有在synchronized 里面,没有获得锁。就会报错。
synchronized:同步代码块。当多个线程访问共享数据的时候,可以用同步代码块包裹避免多个线程抢占资源出现不完全的情况。
wait() notify() notifyAll() 都必须在synchronized 中使用
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210422082831900.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNTUzNTA0,size_16,color_FFFFFF,
wait()导致当前线程等待,直到另一个线程调用该对象的 notify()方法或 notifyAll()方法。 被唤醒后按之前的顺序执行。在这里插入图片描述

notifyAll() 唤醒正在等待对象监视器的所有线程

notify() 唤醒正在等待对象监视器的单个线程。
两个方法都不会释放当前的锁

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silence丶你的名字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值