@toc
模擬銀行叫號器
public
class
ticketwindowrunner
implements
runnable
trycatch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
+" 的號碼是:"
+(index++))
;}}}
public
class
test
}
理想狀態是按照順序乙個乙個去叫號, 叫到500號結束,但是結果卻是:
hread[thread-2,5,main] 的號碼是:494501, 502號都出來了,還重複叫號,順序也不正確, 這時候就要用到同步**塊方式, 修改ticketwindowrunnable類thread[thread-0,5,main] 的號碼是:494
thread[thread-1,5,main] 的號碼是:495
thread[thread-0,5,main] 的號碼是:496
thread[thread-1,5,main] 的號碼是:497
thread[thread-2,5,main] 的號碼是:496
thread[thread-1,5,main] 的號碼是:498
thread[thread-0,5,main] 的號碼是:498
thread[thread-2,5,main] 的號碼是:499
thread[thread-1,5,main] 的號碼是:500
thread[thread-0,5,main] 的號碼是:501
thread[thread-2,5,main] 的號碼是:502
public
class
ticketwindowrunner
implements
runnable
trycatch
(interruptedexception e)
system.out.
println
(thread.
currentthread()
+" 的號碼是:"
+(index++))
;}}}
}
同步方法時候,如果是static修飾的呼叫的是class鎖, 如果不是static修飾的方法,呼叫的是this鎖 Java多執行緒 synchronized同步方法
synchronized同步方法是為了解決 非執行緒安全 的問題,所謂 非執行緒安全 是指多個執行緒對同乙個物件中的變數進行併發訪問時發生,產生 髒讀 的情況。非執行緒安全 問題存在於 例項變數 中,如果是方法內部的私有變數,則不存在 非執行緒安全 問題,也就是 執行緒安全 的了。demo hass...
核心執行緒之間的同步,R3執行緒和核心執行緒的同步
當執行緒1需要等待執行緒2處理一些事情的時候就用到這種執行緒同步機制 1 事件,訊號燈,互斥體都是執行緒之間通訊的方式,事件的通訊能滿足大部分需求。2 休眠函式 large integer sleeptime 定義乙個休眠的時間 sleeptime.quadpart 100 10 100 3 這裡是...
Windows核心程式設計 (五)使用者模式下執行緒同步
1 原子訪問 interlocked系列函式 該系列的函式會保證對乙個值得遞增操作是原子操作,即不會被打斷。2 高速緩衝行 當cpu從記憶體中讀取乙個位元組的時候,它並不是從記憶體中取回乙個位元組,而是取回乙個高速緩衝行。高速緩衝行存在的目的是為了提高效能。一般來說,應用程式會對一組相鄰的位元組進行...