熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

超線程多核心下Java多線程編程技術分析[1]

2013-11-23 19:57:19  來源: Java高級技術 

    Java環境下的多線程技術

    構建線程化的應用程序往往會對程序帶來重要的性能影響例如請考慮這樣一個程序它從磁盤讀取大量數據並且在把它們寫到屏幕之前處理這些數據(例如一個DVD播放器)在一個傳統的單線程程序(今天所使用的大多數客戶端程序)上一次只有一個任務執行每一個這些活動分別作為一個序列的不同階段發生只有在一塊已定義大小的數據讀取完成時才能進行數據處理因此能處理數據的程序邏輯直到磁盤讀操作完成後才得到執行這將導致非常差的性能問題

    在一個多線程程序中可以分配一個線程來讀取數據讓另一個線程來處理數據而讓第三個線程把數據輸送到圖形卡上去這三個線程可以並行運行這樣以來在磁盤讀取數據的同時仍然可以處理數據從而提高了整體程序的性能許多大量的示例程序都可以被設計來同時做兩件事情以進一步提高性能Java虛擬機(JVM)本身就是基於此原因廣泛使用了多線程技術

    本文將討論創建多線程Java代碼以及一些進行並行程序設計的最好練習另外還介紹了對開發者極為有用的一些工具和資源篇幅所限不可能全面論述這些問題所以我想只是重點提一下極重要的地方並提供給你相應的參考信息

    線程化Java代碼

    所有的程序都至少使用一個線程在C/C++和Java中這是指用對main()的調用而啟動的那個線程另外線程的創建需要若干步驟創建一個新線程然後指定給它某種工作一旦工作做完該線程將自動被JVM所殺死

    Java提供兩個方法來創建線程並且指定給它們工作第一種方法是子類化Java的Thread類(在javalang包中)然後用該線程的工作函數重載run()方法下面是這種方法的一個示例

 
public class SimpleThread extends Thread {
 public SimpleThread(String str) {
super(str);
 }
 public void run() {
for (int i = ; i < ; i++) {
 Systemoutprintln(i + + getName());
 try {
sleep((long)(Mathrandom() * ));
 } catch (InterruptedException e) {}
}
Systemoutprintln(DONE! + getName());
 }
}

[]  []  []  []  


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27726.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.