當前位置:才華齋>計算機>java語言>

淺談如何使用java多執行緒

java語言 閱讀(6.56K)

Java多執行緒程式中經常用到的方法有以下幾個:run(),start(),wait(),sleep(),notify(),notifyAll(),yield(),join(),還有一個重要的關鍵字 synchronized。下面分別對這些方法進行解釋:

淺談如何使用java多執行緒

一、run()和start()

這兩個方法應該都比較熟悉,把需要並行處理的程式碼放在run()方法中,start()方法啟動執行緒將自動呼叫 run()方法,這是由Java的記憶體機制規定的'。並且run()方法必須是public訪問許可權,返回值型別為void。

二、關鍵字Synchronized

這個關鍵字用於保護共享資料,當然前提是要分清哪些資料是共享資料。每個物件都有一個鎖標誌,當一個執行緒訪問該物件時,被Synchronized修飾的資料將被“上鎖”,阻止其他執行緒訪問。當前執行緒訪問完這部分資料後釋放鎖標誌,其他執行緒就可以訪問了。

ic ThreadTest implements Runnable

2.{

ic synchronized void run(){

(int i=0;i<10;i++)

5.{

tln(" " + i);

7.}

8.}

ic static void main(String[] args)

10.{

able r1 = new ThreadTest();

able r2 = new ThreadTest();

ad t1 = new Thread(r1);

ad t2 = new Thread(r2);

t();

t();

17.}

18.}

以上這段程式中的 i 變數並不是共享資料,也就是這裡的Synchronized關鍵字並未起作用。因為t1,t2兩個執行緒是兩個物件(r1,r2)的執行緒。不同的物件其資料是不同的,所以r1和r2兩個物件的i變數是並不是共享資料。

當把程式碼改成如下:Synchronized關鍵字才會起作用

able r = new ThreadTest();

ad t1 = new Thread(r);

ad t2 = new Thread(r);

t();

t();