package web;
* synchronized鎖住了整個靜態類
* @author zengst
class aaa2
public static void getinstance() catch (interruptedexception e) catch (interruptedexception e) {
e.printstacktrace();
system.out.println(thread.currentthread().getname());
public class staticsharedtest {
public static void main(string args){
zengst2 z = new zengst2();
thread t1 = new thread(z);
thread t2 = new thread(z);
thread t3 = new thread(z);
t1.start();
t2.start();
t3.start();
class zengst2 implements runnable{
public void run() {
aaa2.getinstance();
執行結果:
thread-0getinstance
thread-1getinstance
thread-2getinstance
thread-0
thread-0
thread-2
thread-2
thread-1
-1thread-1
分析,這裡出現了-1.是沒有按照預期的。
原因是因為,三個執行緒都進入了a>0的判斷,雖然緊接著實現了對整個class的同步。
synchronized方法同步注意事項
1.只有同一例項的synchronized方法同一時間只能被乙個執行緒執行,不同例項的synchronized方法是可以併發的。例如,class a定義了synchronized方法sync 則不同例項a1.sync 和a2.sync 可以同時由兩個執行緒來執行。2.某個物件例項內,synchron...
iOS 標頭檔案匯入 class注意事項
ios 標頭檔案匯入 class注意事項 一,匯入標頭檔案有兩種不同的方法 使用引號或者使用尖括號,例如,import 和 import tire.h 帶尖括號的語句是用來匯入系統標頭檔案的,而帶引號的語句則說明匯入的是專案本地的標頭檔案,如果你看到的頭檔名是用尖括號括起來的,那 麼這個標頭檔案對你...
C 建構函式對this的注意事項
vs2019報錯錯誤 node node char c,int n,node left,node right this c c num n left left right right 正確 node node char c,int n,node left,node right c c num n l...