java学习回顾---死锁与进程间通讯

死锁

死锁即同步里嵌套了同步,导致了两个同步卡住无法继续运行。
在这里插入图片描述

进程间通讯

其实就是多个线程在操作同一个资源,但是操作的功能不同。
多线程间出现安全问题时看两点:一,是不是操作共享资源的代码都同步了。二,多个线程是不是用的是同一个锁。
Wait()和notify()的作用机制类似于木头人的游戏。Notify()默认会唤醒站的最久的“木头人”。
wait(),notify()和notifyall()(用于唤醒所有wait())全部用于同步里面,因为只有同步中才有锁。
notify()只能唤醒同一个锁的wait(),就好比两拨人都在玩木头人,另一波的人不可以唤醒这一波人的木头状态,不可以对不同锁中的线程进行唤醒。所以wait()和notify()都要在前加对象的前缀。
Wait()在使用的时候会向外抛出异常,所以使用wait()的时候要try。
Wait()和notify()可以让两个线程交替执行。(设立一个标志,a线程在执行完后将标志转为b线程可执行并进入wait,然后b线程运行完后将标志变为a线程可执行并唤醒a线程后进入等待)
使用实例:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46428711/article/details/110859930