首頁  >  文章  >  Java  >  Java多執行緒應用方法全解密

Java多執行緒應用方法全解密

黄舟
黄舟原創
2016-12-15 10:04:501641瀏覽

Java多執行緒是我們很多時候都會用到的,在不斷學習的過程中有很多的應用方法。下面我們就來學習下這些關鍵的方法。希望大家有幫助。首先我們先來看看具體的方法分類。

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

  一、run()和start()

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

  二、關鍵字Synchronized

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

  1.public ThreadTest implements Runnable

  2.{

  3.public synchronized void run(){

〔145%; {

  6. System.out.println(" " + i);

  7.}

  8.}

  9.public static void main(String[] args)

〜〜〜〦1. readTest ();

  12.Runnable r2 = new ThreadTest();

  13.Thread t1 = new Thread(r1);

＀14.Th ;

  16.t2.start();

  17.}

  18.}

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

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

  19.Runnable r = new ThreadTest();

  20.Thread ThreadTest();

  20.Thread 1 = new Thread( (r);

  22.t1.start();

  23.t2.start();

  以上就是對Java cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn