亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解答下線程問題謝謝\!!!

解答下線程問題謝謝\!!!

慕姐8946757 2017-08-09 06:51:34
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();你那個鎖我不知道是什么

查看完整回答
反對 回復 2017-08-09
  • 慕姐8946757
    慕姐8946757
    不是的 程序這樣可以運行 我就是想問 如果把if (num<= 0) { break; } 這個代碼改為 if (nnum>0) { } 這樣為什么不能運行了?
  • 慕工程2701759
    慕工程2701759
    我知道,兩種都運行過,沒有異常,換成num>0.因為本來就是num=100,直接break,退出循環結束了。沒有出現你說的能運行,還會出現負數的問題。
?
qq_雨過之后_1

TA貢獻3條經驗 獲得超2個贊

一致循環是因為外面是while(true),而出現負數肯定是鎖對象不一致,試一下ThreadTest01 .class這個鎖對象

查看完整回答
1 反對 回復 2017-08-09
?
慕姐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();

}

}

}

}

}

請把我這段代碼運行一下試試 為甚有負數 不對了? 知道回答下 謝謝!

查看完整回答
反對 回復 2017-08-09
  • 3 回答
  • 0 關注
  • 1746 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號