文章裡借鑑了--這篇文章裡的內容
1、執行緒繼承thred類,並重寫,然後出現非同步的情況。
public class threadtest extends thread
//為了保持數量的一直,票數設定為靜態
static int tick=20;
//重寫run方法,實現買票操作
@override
public void run() else
trycatch(interruptedexception e)}}
}
然後用方法類對這個執行緒進行呼叫
public class mianclass
}
執行緒呼叫的方式如下:哪個執行緒先搶到資源,哪個執行緒就先跑。從第17張票開始,視窗二先搶到了資源,並開始輸出,輸出之後,還沒來得及執行--的操作,然後視窗一就搶到了資源,並開始輸出。導致了異常的情況。如果效果不明顯,可以將迴圈的數值調大。
2、當給執行緒加上同步鎖
public class thredtest extends thread
//為了保持數量的一直,票數設定為靜態
static int tick=20;
//建立乙個靜態鑰匙
static object ob="aa";
//重寫run方法,實現買票操作
@override
public void run() else
}trycatch(interruptedexception e)}}
}
再次用同意的方法類呼叫執行緒。加上鎖之後。每當呼叫這個執行緒,必須等執行完同步鎖裡的方法,才能釋放資源讓下乙個執行緒呼叫。
java中線程的同步的乙個賣票的小案例
public class lesson5testdemo1 這是賣票 class lesson5testdemo2 implements runnable private int tickets 100 private string str new string public void run wh...
乙個多執行緒同步問題
昨天,路過的時候,發現了這個問題 class syncclass catch exception e system.out.println class test implements runnable public void run 輸出結果如圖 其實synchronized void synmth...
C winform 只執行乙個例項視窗
using system using system.windows.forms using system.diagnostics using system.runtime.interopservices using system.reflection namespace emailoperation...