Java多線程是我們很多時候都會用到的在不斷學習的過程中有很多的應用方法下面我們就來學習下這些關鍵的方法希望大家有所幫助首先我們先來看看具體的方法分類
Java多線程程序中經常用到的方法有以下幾個run()start()wait()sleep()notify()notifyAll()yield()join()還有一個重要的關鍵字 synchronized下面分別對這些方法進行解釋
一run()和start()
這兩個方法應該都比較熟悉把需要並行處理的代碼放在run()方法中start()方法啟動線程將自動調用 run()方法這是由Java的內存機制規定的並且run()方法必須是public訪問權限返回值類型為void
二關鍵字Synchronized
這個關鍵字用於保護共享數據當然前提是要分清哪些數據是共享數據每個對象都有一個鎖標志當一個線程訪問該對象時被Synchronized修飾的數據將被上鎖阻止其他線程訪問當前線程訪問完這部分數據後釋放鎖標志其他線程就可以訪問了
public ThreadTest implements Runnable
{
public synchronized void run(){
for(int i=;i<;i++)
{
Systemoutprintln( + i);
}
}
public static void main(String[] args)
{
Runnable r = new ThreadTest();
Runnable r = new ThreadTest();
Thread t = new Thread(r);
Thread t = new Thread(r);
tstart();
tstart();
}
}
以上這段程序中的 i 變量並不是共享數據也就是這裡的Synchronized關鍵字並未起作用因為tt兩個線程是兩個對象(rr)的線程不同的對象其數據是不同的所以r和r兩個對象的i變量是並不是共享數據
當把代碼改成如下Synchronized關鍵字才會起作用
Runnable r = new ThreadTest();
Thread t = new Thread(r);
Thread t = new Thread(r);
tstart();
tstart();
以上就是對Java多線程的詳細介紹
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27615.html