Java多線程編程

來源:互聯網
上載者:User

標籤:

不管我是多麼喜歡JAVA但是,從實際開發角度講,Java的多線程確實沒有C++好使。

表現在:

1.Java沒有全域變數;

2.Java 的線程之間的通訊比較差,C++提供了多種通訊方式;

3.Java的資料同步是通過synchronized來實現,但是基本上等於交給了虛擬機器來完成,

而C++有很多種:臨界區、互斥體等。

4. Java的多線程run方法沒有傳回值,因此如何能得到子線程的反饋資訊,確實令人頭疼。

5.Java的多線程是協作式,這樣等於作業系統放棄了對線程的控制;

 

這裡談談我在java多線程中的編寫經驗:

1.建立thread時,將主控類或者叫做調用類傳入建構函式中,例如:

Class A調用Class B,Class A作為Class B建構函式的參數。

這樣再建立一個子線程時,用同樣的方式實現,這樣主控類的執行個體變數就可以作為

全域變數,當然要注意同步。

 

2. 類同步中wait(),notify()一定要考慮好邏輯,不然有可能造成阻塞。

 

3. 如果多個線程調用或者目前不是很清楚有多少個線程進行通訊,最好的辦法是

自己實現一個listener,然後調用類調用Listener的一個執行個體方法進行通訊。

工作原理:

 

   1) Listener介面提供同步方法  例如SynData();

   2) 同步線程提供添加和刪除Listener的方法,同時線上程中對註冊Listener

的類進行輪流通知;

   3) 使用給同步資料的線程類,繼承Listener介面,實現其方法,將本線程即將結束的資料發送到同步線程中;

Java多線程編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.