簡體   English   中英

關於等待和通知

[英]Regarding wait and notify

我正在開發與wait&notify相關的簡單代碼,我創建了兩個單獨的類,下面是這些類

    class ThreadA {
 public static void main(String [] args) {
 Thread b = new Thread();
 b.start();

 synchronized(b) {
 try {
 System.out.println("Waiting for b to complete...");
 b.wait();
} catch (InterruptedException e) {}
 //System.out.println("Total is: " + b.totals);
 }
}
}

and the other one is ...





class ThreadB extends Thread {
public  int totals;

 public void run() {
     synchronized(this) {
     for(int i=0;i<100;i++) {
      totals += i;
      }
      notify();
      }
      }
     }

但是在ThreadA類內部,當我從b線程對象訪問總數時,遇到了complie time錯誤。

System.out.println("Total is: " + b.totals);

請告訴我如何糾正它,以便我可以執行我的代碼.. !! 在此先感謝..!1

這是當前的問題:

Thread b = new Thread();

您實際上從未真正創建ThreadB的實例。 b的類型僅為Thread ,而不是ThreadB ,這就是為什么編譯器無法解析totals標識符的原因

另外:

  • 公共字段是一個非常糟糕的主意-改用屬性
  • Thread上調用waitnotify是一個非常糟糕的主意,因為Thread類本身會調用waitnotify
  • 通常,您應該實現Runnable而不是擴展Thread ,以更好地分離問題。
  • 它通常會更好地叫上你的類的東西哪曉得到監視器是唯一可見該代碼,而不是同步(並等待)公開可見的顯示器上同步。 這樣可以更輕松地推斷出線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM