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
提交
取消