無論我是多麼喜歡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 Swing技術。 因爲時間關係,今天就談到這裏,但願能拋磚引玉!!請你們多多指教