konhon

          忘掉過去,展望未來。找回自我,超越自我。
          逃避不一定躲的過, 面對(duì)不一定最難過, 孤單不一定不快樂, 得到不一定能長(zhǎng)久, 失去不一定不再擁有, 可能因?yàn)槟硞€(gè)理由而傷心難過, 但我卻能找個(gè)理由讓自己快樂.

          Google

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
          不管我是多么喜歡JAVA但是,從實(shí)際開發(fā)角度講,Java的多線程確實(shí)沒有C++好使。
          表現(xiàn)在:
          1.Java沒有全局變量;
          2.Java 的線程之間的通信比較差,C++提供了多種通信方式;
          3.Java的數(shù)據(jù)同步是通過synchronized來實(shí)現(xiàn),但是基本上等于交給了虛擬機(jī)來完成,
          而C++有很多種:臨界區(qū)、互斥體等。
          4. Java的多線程run方法沒有返回值,因此如何能得到子線程的反饋信息,確實(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è)原理來自于Java Swing技術(shù)。
          由于時(shí)間關(guān)系,今天就談到這里,希望能拋磚引玉??!請(qǐng)大家多多指教!
          下一次談一談我用上面的方式實(shí)現(xiàn)的一個(gè)網(wǎng)關(guān)實(shí)例,謝謝各位!

           

          posted on 2005-09-22 21:25 konhon 優(yōu)華 閱讀(389) 評(píng)論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 新安县| 剑河县| 山阴县| 尖扎县| 辽中县| 涿鹿县| 大埔区| 蓝田县| 贺州市| 镇江市| 鄂托克旗| 临安市| 桃园市| 边坝县| 海口市| 洮南市| 洛南县| 福鼎市| 文昌市| 铁岭市| 台江县| 阿尔山市| 奉新县| 海晏县| 鄂托克前旗| 日土县| 连南| 汝州市| 安顺市| 海晏县| 博湖县| 灵寿县| 南皮县| 兴隆县| 刚察县| 天峻县| 石门县| 南汇区| 集贤县| 泽库县| 屯昌县|