Java多線程程序需要我們具體的學習相關語法其中我們要了解相關的語法究竟有什麼很多重要的問題成本都在細節基本的語法就是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/27305.html