首页 热点资讯 义务教育 高等教育 出国留学 考研考公

java里多线程的wait问题

发布网友 发布时间:2022-04-22 05:05

我来回答

3个回答

热心网友 时间:2023-07-19 09:23

我这样给你说不知道你理解不理解,可能我的例子举的不好你看不明白。在谈到多线程的时候我们常说的一个概念是锁。这里我们把它想象成为一把真正的锁。把线程想象成一个个动态的人,他们想进去一个屋子,但是通往这个屋子的门有一个洞,这个洞只能同时一个人钻进去。这就相当于synchronized 的作用。这个屋的们上有一把锁。锁就等于condition。满足这个条件就相当于能打开锁。这时要注意这个锁指只能挂在屋的门上的,就相当于你说的资源类上面。而不能挂在人上面,因为人是动态的,挂在某个人身上别的人就找不到了。其实在jvm里面它是用跟资源类相关的一个标志位来表示的。不知道这样解释可否。追问这个我知道,所以说wait的是人,但是wait()、notify()、notifyAll()却在屋子上?

追答不是在屋子上,是挂在某一个资源上,相当于把钥匙放在一个小盒子里,每个线程来的时候先去盒子里面取钥匙,取不到就wait。总不能把这个钥匙放在自己身上吧。

热心网友 时间:2023-07-19 09:23

喜欢思考绝对是好事,但我希望你对于一个为题你能自己分析的透彻点,wait()当然是线程去等待,线程讲的就是电脑的cpu如何工作,而你说的资源了只是数据也就是你给电脑的一种指令,数据有什么等待的说法吗?还有你说上面的那个程序不会出来,你那个while的条件是什么,你都没吧,如果是死循环那当然不会出来了。

热心网友 时间:2023-07-19 09:24

博客园去啊

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com