package com.bjsxt.base.sync002;
/*** 關鍵字synchronized取得的鎖都是物件鎖,而不是把一段**(方法)當做鎖,
* 所以**中哪個執行緒先執行synchronized關鍵字的方法,哪個執行緒就持有該方法所屬物件的鎖(lock),
* * 在靜態方法上加synchronized關鍵字,表示鎖定.class類,類一級別的鎖(獨佔.class類)。
* 總結:上面的方法和變數如果不加static,那麼兩個執行緒就可以同時進入該方法,這樣就會出現併發問題。
* 如果加上static關鍵字,那麼執行緒1呼叫該方法的時候,那麼執行緒2必須等待執行緒1釋放鎖後才可以進入該方法,這樣就避免了併發,
* static和synchronized組合的方法就是獨佔類。
* @author alienware**/
public class multithread else
system.out.println("tag " + tag + ", num = " + num);
} catch (interruptedexception e)
}//注意觀察run方法輸出順序
public static void main(string args)
});thread t2 = new thread(new runnable()
});
t1.start();
t2.start();}}
Java 併發程式設計 基礎 一
同步 和 非同步描述方法的呼叫。同步 方法呼叫一旦開始,呼叫者必須等到方法呼叫返回後,才能繼續後續的行為。序列的進行方法的呼叫。非同步方法呼叫更像乙個訊息傳遞,一旦方法呼叫就會立即返回。併發 多個任務交替執行。並行 多個cpu的系統上,多個cpu同時執行任務。用來表示公共資源或者公共資料。可以被多個...
併發程式設計 基礎篇
當前物件型別 物件頭長度 陣列3字長 非陣列2字長 長度內容 說明1個字長 32bit 64bit mark world 儲存物件的hashcode以及鎖的資訊 1個字長 class metedata address 儲存物件型別資料的指標 1個字長 array length 陣列長度 如果物件是陣...
Java高併發基礎篇 併發與執行緒(一)
執行緒是輕量級程序,是程式執行的最小單位 在介紹執行緒之前,我們必須要知道程序的概念。程序 process 是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。程序是程式的基本執行體,執行緒的容器。程式是指令 資料及其組織形式的描述,程序是程式的...