Java多執行緒常用的幾個關鍵字
本文是本站小編搜尋整理的關於Java多執行緒常用的幾個關鍵字,供參考借鑑,希望對大家有所幫助!想了解更多相關資訊請持續關注我們應屆畢業生考試網!
一、同步(synchronized)和非同步(asynchronized)
1、同步(synchronized)簡單說可以理解為共享的意思,如果資源不是共享的,就沒必要進行同步。設定共享資源為同步的話,可以避免一些髒讀情況。
2、非同步(asynchronized)簡單說可以理解為獨立不受到其他任何制約。
舉個例子:
執行緒1呼叫了帶有synchronized關鍵字的方法methodA,執行緒2呼叫了非同步方法methodB,出現的現象是同時控制檯輸出 t1,t2。
package ;
/**
* 多執行緒之物件同步鎖和非同步鎖Demo
*
* @author ietree
*/
public class SynAndAsynDemo {
public static void main(String[] args) {
final SynAndAsynDemo mo = new SynAndAsynDemo();
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
odA();
}
},"t1");
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
odB();
}
},"t2");
t();
t();
}
// 方法A
public synchronized void methodA(){
try {
tln(entThread()ame());
// 休眠4秒
p(4000);
} catch (InterruptedException e) {
tStackTrace();
}
}
// 方法B
public void methodB(){
tln(entThread()ame());
}
}
執行緒1呼叫了帶有synchronized關鍵字的方法methodA,執行緒2呼叫了帶有synchronized關鍵字的方法methodB,出現的.現象是首先輸出t1,等待4秒之後再輸出t2。
package ;
/**
* 多執行緒之物件同步鎖和非同步鎖Demo
*
* @author ietree
*/
public class SynAndAsynDemo {
public static void main(String[] args) {
final SynAndAsynDemo mo = new SynAndAsynDemo();
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
odA();
}
},"t1");
Thread t2 = new Thread(new Runnable() {
@Override
public void run() {
odB();
}
},"t2");
t();
t();
}
// 方法A
public synchronized void methodA(){
try {
tln(entThread()ame());
// 休眠4秒
p(4000);
} catch (InterruptedException e) {
tStackTrace();
}
}
// 方法B
public synchronized void methodB(){
tln(entThread()ame());
}
}
結論:
在第一段程式碼中t1執行緒先持有object物件的Lock鎖,t2執行緒可以以非同步的方式呼叫物件中的非synchronized修飾的方法,所以同時輸出;
在第二段程式碼中t1執行緒先持有object物件的Lock鎖,t2執行緒如果在這個時候呼叫物件中的同步(synchronized)方法則需等待,也就是同步。
-
關於java實驗報告模板
1.掌握JavaApplet的程式結構和開發過程。2.學會編寫Applet對應的HTML檔案,掌握從HTML檔案向Applet傳遞引數的方法。3.掌握文字框物件的使用方法。4.掌握按鈕類物件的使用方法。5.掌握佈局管理器的用法。6.理解ActionEvent事件的`含義。7.掌握事件源、監視器、處理事...
-
初學java程式設計入門必備的知識
基礎知識是新手學習一門新技術的必須掌握的,下面內容由小編為大家介紹初學java程式設計入門必備的知識,供大家參考!01、Java程式設計出現的背景1991年Sun公司的JamesGosling等人開始開發名稱為Oak的語言。希望用於控制嵌入在有線電視交換盒、PDA等的微處理器,但卻沒有取得...
-
Java讀取郵件的方法
在Java程式設計設計中,我們如何通過Java讀取郵件呢?下面小編為大家介紹了Java讀取郵件的'方法,希望能幫到大家!複製程式碼程式碼如下:publicvoidreceive()throwsException{Log.e(tag,"receive()");//sharedpreference讀取資料,用split()方法,分開字串。SharedPreferencespre...
-
Java語法基礎for語句練習
本文是本站小編搜尋整理的關於Java語法基礎for語句練習,供參考學習,希望對大家有所幫助!想了解更多相關資訊請持續關注我們應屆畢業生考試網!控制語句——for練習語句的巢狀應用累加求和,計數器迴圈巢狀一、語句的巢狀應用語句巢狀形式。其實就是語句中...