konhon

          忘掉過去,展望未來。找回自我,超越自我。
          逃避不一定躲的過, 面對不一定最難過, 孤單不一定不快樂, 得到不一定能長久, 失去不一定不再擁有, 可能因為某個理由而傷心難過, 但我卻能找個理由讓自己快樂.

          Google

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            203 Posts :: 0 Stories :: 61 Comments :: 0 Trackbacks
          不管我是多么喜歡JAVA但是,從實際開發(fā)角度講,Java的多線程確實沒有C++好使。
          表現(xiàn)在:
          1.Java沒有全局變量;
          2.Java 的線程之間的通信比較差,C++提供了多種通信方式;
          3.Java的數(shù)據(jù)同步是通過synchronized來實現(xiàn),但是基本上等于交給了虛擬機來完成,
          而C++有很多種:臨界區(qū)、互斥體等。
          4. Java的多線程run方法沒有返回值,因此如何能得到子線程的反饋信息,確實令人頭疼。
          5.Java的多線程是協(xié)作式,這樣等于操作系統(tǒng)放棄了對線程的控制;

          這里談談我在java多線程中的編寫經(jīng)驗:
          1.創(chuàng)建thread時,將主控類或者叫做調用類傳入構造函數(shù)中,例如:
           Class A調用Class B,Class A作為Class B構造函數(shù)的參數(shù)。
          這樣再創(chuàng)建一個子線程時,用同樣的方式實現(xiàn),這樣主控類的實例變量就可以作為
          全局變量,當然要注意同步。

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

          3. 如果多個線程調用或者目前不是很清楚有多少個線程進行通信,最好的辦法是
          自己實現(xiàn)一個listener,然后調用類調用Listener的一個實例方法進行通信。
          工作原理:

             1) Listener接口提供同步方法  例如SynData();
             2) 同步線程提供添加和刪除Listener的方法,同時在線程中對注冊Listener
          的類進行輪流通知;
             3) 使用給同步數(shù)據(jù)的線程類,繼承Listener接口,實現(xiàn)其方法,將本線程即將結束的數(shù)據(jù)發(fā)送到同步線程中;

          其實這個原理來自于Java Swing技術。
          由于時間關系,今天就談到這里,希望能拋磚引玉!!請大家多多指教!
          下一次談一談我用上面的方式實現(xiàn)的一個網(wǎng)關實例,謝謝各位!

           

          posted on 2005-09-22 21:25 konhon 優(yōu)華 閱讀(397) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 涟水县| 大余县| 宁城县| 旅游| 房产| 鹿邑县| 利辛县| 弥渡县| 桂阳县| 新源县| 东乡县| 太保市| 夏津县| 方山县| 蒙山县| 丽江市| 尼勒克县| 舟曲县| 沁源县| 绥化市| 五原县| 根河市| 镇宁| 道真| 福贡县| 大关县| 都江堰市| 韶山市| 上犹县| 禄劝| 钦州市| 建湖县| 津南区| 平江县| 虹口区| 永福县| 贵德县| 庄河市| 崇州市| 哈密市| 依兰县|