.wait() 的作用是 让当前线程进入等待状态,同时释放当前线程所持有的锁。
那 .wait前面的对象要填什么
.wait() 的作用是 让当前线程进入等待状态,同时释放当前线程所持有的锁。
那 .wait前面的对象要填什么
一般来说,synchronized谁就wait()谁。synchronized拿到对象锁,执行过程中发现条件不成熟,于是wait()把拿到的对象锁放下,继续等待。给其他线程机会。
wait前面应该是线程。但是你是字符串变量,感觉你需要的不是wait,而是lock (用了synchronized,不需要再lock,其它线程访问prev等变量,如果有线程锁定,会自动等待)
https://blog.csdn.net/superjunenaruto/article/details/58315357
你这个例子我感觉会出现线程B和C死等的情况
wait可以用Object对象
Object对象用于通知处在等待该对象的线程的方法
so,你可以这样理解,设定Object a,b,c用来同步代码块
上面不好理解,下面用本例说明
每一个MyThThread线程中定义两个Object对象,前一个作用为锁定自己的代码块,后一个用于解锁别的线程的代码块。
main中
A线程开启,c锁自己,开a
B线程开启,a锁自己,被A线程开启,开b
C线程开启,b锁自己,被B线程开启,开c
A线程开启,循环
可以做到十次ABC循环
但是有个问题
最后一次的C线程wait之后没人开,会一直等待
建议设一个条件判断是最后一次时不走等待;