銀行排隊叫號的場景如圖所示:
有乙個出票機,按順序出票。有多個櫃檯叫號。對於這樣的場景,**實現可以分為2部分,出票機和櫃檯。
出票機
public
class
ticketwindow
implements
runnable catch (interruptedexception e) }}
}
新建ticketwindow類,繼承runnable介面。主要用於生成號碼。這裡號碼從1開始,並且有乙個最大值50。當小於最大值時,號碼則順序加一。
櫃檯
public
class bank
}
模擬三個櫃檯的情況,每個櫃檯是乙個單獨的執行緒,但是它們必須共享出票資料,所以只定義乙個final 的ticketwindow物件。
執行結果如下:
二號櫃檯 的號是:2
一號櫃檯 的號是:1
三號櫃檯 的號是:3
二號櫃檯 的號是:4
三號櫃檯 的號是:6
一號櫃檯 的號是:5
二號櫃檯 的號是:7
三號櫃檯 的號是:8
一號櫃檯 的號是:9
二號櫃檯 的號是:10
三號櫃檯 的號是:11
一號櫃檯 的號是:12
二號櫃檯 的號是:13
三號櫃檯 的號是:14
一號櫃檯 的號是:15
二號櫃檯 的號是:16
三號櫃檯 的號是:17
一號櫃檯 的號是:18
三號櫃檯 的號是:19
二號櫃檯 的號是:19
一號櫃檯 的號是:20
三號櫃檯 的號是:21
一號櫃檯 的號是:22
二號櫃檯 的號是:23
三號櫃檯 的號是:24
一號櫃檯 的號是:25
二號櫃檯 的號是:26
三號櫃檯 的號是:27
一號櫃檯 的號是:28
二號櫃檯 的號是:29
一號櫃檯 的號是:31
三號櫃檯 的號是:30
二號櫃檯 的號是:32
一號櫃檯 的號是:33
三號櫃檯 的號是:33
二號櫃檯 的號是:34
一號櫃檯 的號是:35
三號櫃檯 的號是:36
二號櫃檯 的號是:37
一號櫃檯 的號是:38
三號櫃檯 的號是:39
二號櫃檯 的號是:40
一號櫃檯 的號是:41
三號櫃檯 的號是:42
二號櫃檯 的號是:43
一號櫃檯 的號是:44
三號櫃檯 的號是:44
二號櫃檯 的號是:45
一號櫃檯 的號是:46
三號櫃檯 的號是:47
二號櫃檯 的號是:48
一號櫃檯 的號是:49
三號櫃檯 的號是:50
process finished with
exit code 0
可以看到,三個櫃檯同時叫號的效果 JAVA併發程式設計學習
併發程式設計主要目的是為了在相同的時間內讓程式執行得更快或者處理更多的任務。為了實現這一目的,併發程式設計會面臨很多的挑戰。併發程式設計必然會帶來多執行緒之間的問題,比如上下文之間的切換,執行緒死鎖,以及硬體資源的限制。無論是單核還是多核處理器都支援多執行緒。在單核處理器中,cpu會給每個執行緒分配...
Java併發程式設計學習 3 執行緒間協作
目錄頁 t.join 方法阻塞呼叫此方法的執行緒 calling thread 直到執行緒t完成,此執行緒再繼續 直接上 package com.concurrent.coline.part3.join 類說明 join方法的使用 public class usejoin override publ...
java併發程式設計實踐學習
1.futuretask有個簡單理解,但是例子不是非常懂,get 是返回結果,沒有結果的話阻塞,為什麼能處理耗時的計算操作呢?2.copyonwritearraylist究竟在什麼時候複製啊?2013 2 20 p294 清單14.3是什麼意思,先驗條件在 用到了 2013 2 21 p294 29...