您好,登錄后才能下訂單哦!
這篇文章主要講解了“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=0;i<10;i++) { System.out.println(" " + i); } } public static void main(String[] args) { Runnable r1 = new ThreadTest(); Runnable r2 = new ThreadTest(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); } }
以上這段程序中的 i 變量并不是共享數據,也就是這里的Synchronized關鍵字并未起作用。因為t1,t2兩個線程是兩個對象(r1,r2)的線程。不同的對象其數據是不同的,所以r1和r2兩個對象的i變量是并不是共享數據。
當把代碼改成如下:Synchronized關鍵字才會起作用
Runnable r = new ThreadTest(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start();
感謝各位的閱讀,以上就是“Java多線程應用方法有哪些”的內容了,經過本文的學習后,相信大家對Java多線程應用方法有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。