java多线程构造函数_Java多线程编程经验谈
不管我是多么喜歡JAVA但是,從實(shí)際開(kāi)發(fā)角度講,Java的多線程確實(shí)沒(méi)有C++好使。
表現(xiàn)在:
1.Java沒(méi)有全局變量;
2.Java 的線程之間的通信比較差,C++提供了多種通信方式;
3.Java的數(shù)據(jù)同步是通過(guò)synchronized來(lái)實(shí)現(xiàn),但是基本上等于交給了虛擬機(jī)來(lái)完成,而C++有很多種:臨界區(qū)、互斥體等。
4. Java的多線程run方法沒(méi)有返回值,因此如何能得到子線程的反饋信息,確實(shí)令人頭疼。
5.Java的多線程是協(xié)作式,這樣等于操作系統(tǒng)放棄了對(duì)線程的控制;
這里談?wù)勎以趈ava多線程中的編寫經(jīng)驗(yàn):
1.創(chuàng)建thread時(shí),將主控類或者叫做調(diào)用類傳入構(gòu)造函數(shù)中,例如:
Class A調(diào)用Class B,Class A作為Class B構(gòu)造函數(shù)的參數(shù)。
這樣再創(chuàng)建一個(gè)子線程時(shí),用同樣的方式實(shí)現(xiàn),這樣主控類的實(shí)例變量就可以作為全局變量,當(dāng)然要注意同步。
2. 類同步中wait(),notify()一定要考慮好邏輯,不然有可能造成阻塞。
3. 如果多個(gè)線程調(diào)用或者目前不是很清楚有多少個(gè)線程進(jìn)行通信,最好的辦法是自己實(shí)現(xiàn)一個(gè)listener,然后調(diào)用類調(diào)用Listener的一個(gè)實(shí)例方法進(jìn)行通信。
工作原理:
1) Listener接口提供同步方法? 例如SynData();
2) 同步線程提供添加和刪除Listener的方法,同時(shí)在線程中對(duì)注冊(cè)Listener的類進(jìn)行輪流通知;
3) 使用給同步數(shù)據(jù)的線程類,繼承Listener接口,實(shí)現(xiàn)其方法,將本線程即將結(jié)束的數(shù)據(jù)發(fā)送到同步線程中;
其實(shí)這個(gè)原理來(lái)自于Java Swing技術(shù)。
總結(jié)
以上是生活随笔為你收集整理的java多线程构造函数_Java多线程编程经验谈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java中怎么固定间距_java中的Gr
- 下一篇: java n-ide 支持库,Andro