关于老师的例题
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方法处报错
正在回答
当flag为false时,if(flag)相当于if(false),也就是不满足if语句的条件,不会执行if语句后面的代码,也就是不执行wait()方法,线程不会等待
关于你的报错,可以查看一下你的方法是否用同步关键字synchronized修饰了,如果没有要加上。如果不是这个问题,还请贴一下你的代码
祝学习愉快!
- 参与学习 人
- 提交作业 5461 份
- 解答问题 7238 个
此次推出的专题为Android攻城狮培养计划的第一部分语法与界面基础篇,将带大家从0开始学习Android开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星