关于老师的例题

关于老师的例题

flag的初值设为false,那么if(flag)里的flag就是false吗,这里的逻辑我有点混乱。还有个问题,我按照老师的代码敲了之后运行报错,具体如下

生产:0Exception in thread "Thread-0" java.lang.IllegalMonitorStateException


消费:0

at java.lang.Object.notifyAll(Native Method)

at com.me.queue.Queue.set(Queue.java:34)

at com.me.queue.Producer.run(Producer.java:13)

at java.lang.Thread.run(Thread.java:619)

Exception in thread "Thread-1" java.lang.IllegalMonitorStateException

at java.lang.Object.notifyAll(Native Method)

at com.me.queue.Queue.get(Queue.java:18)

at com.me.queue.Consumer.run(Consumer.java:12)

at java.lang.Thread.run(Thread.java:619)

就是生成类和消费类及queue类里的get/set方法处报错

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

当flag为false时,if(flag)相当于if(false),也就是不满足if语句的条件,不会执行if语句后面的代码,也就是不执行wait()方法,线程不会等待

关于你的报错,可以查看一下你的方法是否用同步关键字synchronized修饰了,如果没有要加上。如果不是这个问题,还请贴一下你的代码

祝学习愉快!


  • 幕之内 提问者 #1
    的确没有用同步关键字,非常感谢!
    2017-06-04 13:40:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师