多線程初步理解

在網上看到一個有意思的小問題,就copy過來自己想辦法看看能否解決

題目:

  1. 某銀行有至多三個窗口提供服務。

  2. 該銀行每天至多服務100人次;

  3. 初始時,只有一個窗口開放,如果等待人數超過兩人(包含正在辦理業務的人),纔開放下一個窗口。

需要考慮的問題如下

這個小小的問題裏面包含幾個關鍵點:

  1. 顯然三個窗口可以用三個線程來做,那麼如何得到三個線程服務的總人數?涉及到多線程數據同步問題。

  2. 100人次可能不是一次來的。有可能分幾次來,那麼某一個或幾個窗口會處於等待狀態,涉及到線程等待和喚醒問題。

  3. 初始並不是一次出來三個窗口,而是根據隊列中等待人數多少。那麼考慮到擴展性,我要增加到四個或N個窗口呢?涉及到動態創建線程問題。

  4. 當服務總人數達到100人次,不可能直接讓三個窗口結束任務,總得讓人家把業務辦完吧?涉及到多線程之間等待問題。

  5. 當服務總人數達到100人次,並且三個窗口都結束了任務,如何關閉所有線程?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章