淺談如何使用java多線程

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();