Queue 是大家常碰到的資料結構, 我們可以利用一條 thread 放命令, 另外一條 thread 等待時機然後開始讀取命令並執行工作. 利用 Queue 讓我們可以執行非同步處理的工作.
然而, 遇到多執行緒, 問題馬上就來了. 當有一個執行緒正在加入新的命令, 另外一個執行緒要讀命令, 就會有同步的問題. 一般我們都會用同步的指令來保護 queue 的內部狀態, 使其一致.
幸好, Java 已經幫我們完成上述的工作, 你不用管多執行緒的問題, ConcurrentLinkedQueue 已經幫你做好了.
操作很簡單
加入資料: add
取出資料: poll
下面是一個簡單的操作範例:
為了簡單起見沒有使用 multi-thread 實做這個範例, 但是已經包含了基本的操作
by Jing.
用synchronized冠上自己的function應該也是可以work?!
回覆刪除