class ThreadTest01 implements Runnable { int num = 100; // 2、覆盖接口中的run方法。。 @Override public void run() { while (true) { /* * 格式: synchronized(锁对象){ //需要同步的代码 } */ synchronized (Demo1.class) { if (num<= 0) { break; } try { Thread.sleep(1); System.out.println( Thread.currentThread().getName() + "出售了" + (1000 - num + 1) + "张票,还剩余:" + (--num) + "张"); /* * this.notify(); this.wait(); */ } catch (InterruptedException e) { e.printStackTrace(); } } } }}这个我把if语句里面的num<=0 break; 改成num>0; 为什么程序一直在运行,还有负数啊,求解释?
3 回答
已采纳
慕工程2701759
TA贡献16条经验 获得超17个赞
老哥,看起来也没毛病,运行起来也没毛病,不管是一个线程还是多个线程。我和你的区别就是我的锁是自己定义了一个Object o= new Object();你那个锁我不知道是什么
慕姐8946757
TA贡献39条经验 获得超24个赞
class ThreadTest01 implements Runnable {
int num = 100;
// 2、覆盖接口中的run方法。。
@Override
public void run() {
while (true) {
/*
* 格式: synchronized(锁对象){ //需要同步的代码 }
*/
synchronized (Demo1.class) {
if (num》0) {
}
try {
Thread.sleep(1);
System.out.println(
Thread.currentThread().getName() + "出售了" + (1000 - num + 1) + "张票,还剩余:" + (--num) + "张");
/*
* this.notify(); this.wait();
*/
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
请把我这段代码运行一下试试 为甚有负数 不对了? 知道回答下 谢谢!
添加回答
举报
0/150
提交
取消