程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> JAVA 的多線程淺析

JAVA 的多線程淺析

編輯:JAVA編程入門知識

一 Java 語言的來源、及特點

  
在這個高速信息的時代,商家們紛紛把信息、產品做到Internet國際互連網頁上。再這些不平常網頁的背後,要屬功能齊全、安全可靠的編程語言,Java是當之無愧的。Java是由Sun Microsystem開發的一種功能強大的新型程序設計語言。是與平台無關的編程語言。它是一種簡單的、面象對象的、分布式的、解釋的、鍵壯的、安全的、結構的中立的、可移植的、性能很優異的、多線程的、動態的、語言。

Java自問世以後,以其編程簡單、代碼高效、可移植性強,很快受到了廣大計算機編程人士的青睐。Java語言是Internet上具有革命性的編程語言,它具有強大的動畫、多媒體和交互功能,他使World Web進入了一個全新的時代。Java語言與C++極為類似,可用它來創建安全的、可移植的、多線程的交互式程序。另外用Java開發出來的程序與平台無關,可在多種平台上運行。後台開發,是一種高效、實用的編程方法。人們在屏幕前只能看到例如圖案、計算的結果等。實際上操作系統往往在後台來調度一些事件、治理程序的流向等。例如操作系統中的堆棧,線程間的資源分配與治理,內存的創建、訪問、治理等。可謂舉不盛舉。下面就多線程來談一談。

二 JAVA的多線程理論

2.1引入

Java提供的多線程功能使得在一個程序裡可同時執行多個小任務。線程有時也稱小進程是一個大進程裡分出來的小的獨立的進程。因為Java實現的多線程技術,所以比C和C++更鍵壯。多線程帶來的更大的好處是更好的交互性能和實時控制性能。當然實時控制性能還取決於系統本身(UNIX,Windows,Macintosh等),在開發難易程度和性能上都比單線程要好。傳統編程環境通常是單線程的,由於JAVA是多線程的。盡管多線程是強大而靈巧的編程工具,但要用好卻不輕易,且有許多陷阱,即使編程老手也難免誤用。為了更好的了解線程,用辦公室工作人員作比喻。辦公室工作人員就象CPU,根據上級指示做工作,就象執行一個線程。在單線程環境中,每個程序編寫和執行的方式是任何時候程序只考慮一個處理順序。用我們的比喻,就象辦公室工作人員從頭到尾不受打攪和分心,只安排做一個工作。當然,實際生活中工作人員很難一次只有一個任務,更常見的是工作人員要同時做幾件事。老板將工作交給工作人員,希望工作人員做一這個工作,再做點那個工作,等等。假如一個任務無法做下去了,比如工作人員等待另一部門的信息,則工作人員將這個工作放在一邊,轉入另一個工作。一般來說,老板希望工作人員手頭的各個任務每一天都有一些進展。這樣就引入了多線程的概念。多線程編程環境與這個典型的辦公室非常相似,同時給CPU分配了幾個任務或線程。和辦公室人員一樣,計算機CPU實際上不可能同一時間做幾件事,而是把時間分配到不同的線程,使每個線程都有點進展。假如一個線程無法進行,比如線程要求的鍵盤輸入尚未取得,則轉入另一線程的工作。通常,CPU在線程間的切換非常迅速,使人們感覺到好象所有線程是同時進行的。

任何處理環境,無論是單線程還是多線程,都有三個要害方面。第一個是CPU,它實際上進行計算機活動;第二個是執行的程序的代碼;第三個是程序操作的數據。
在多線程編程中,每個線程都用編碼提供線程的行為,用數據供給編碼操作。多個線程可以同時處理同一編碼和數據,不同的線程也可能各有不同的編碼和數據。事實上編碼和數據部分是相當獨立的,需要時即可向線程提供。因此經常是幾個線程使用同一編碼和不同的數據。這個思想也可以用辦公室工作人員來比喻。會計可能要做一個部門的帳或幾個或幾個部門的帳。任何情況的做帳的任務是相同的程序代碼,但每個部門的數據是不同的。會計可能要做整個公司的帳,這時有幾個任務,但有些數據是共享的,因為公司帳需要來自各個部門的數據。

多線程編程環境用方便的模型隱藏CPU在任務切換間的事實。模型答應假裝成有多個可用的CPU。為了建立另一個任務,編程人員要求另一個虛擬CPU,指示它開始用某個數據組執行某個程序段。下面我們來建立線程。

建立線程

在JAVA中建立線程並不困難,所需要的三件事:執行的代碼、代碼所操作的數據和執行代碼的虛擬CPU。虛擬CPU包裝在Thread類的實例中。建立Thread對象時,必須提供執行的代碼和代碼所處理的數據。JAVA的面向對象模型要求程序代碼只能寫成類的成員方法。數據只能作為方法中的自動(或本地)變量或類的成員存在。這些規則要求為線程提供的代碼和數據應以類的實例的形式出現。

Public class SimpleRunnable implemants Runable{

Private String message;

Public static void main(String args[]){

SimpleRunnable r1=new SimpleRunnable(“Hello”);

Thread t1=new Thread(r1);

t1.start();

}

public SimpleRunnable(String message){

this.message=message;

}

public void run(){

for(;;){

System.out.println(message);

}

}

}

線程開始執行時,它在public void run()方法中執行。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved