BlockingQueue 通常用于一個線程生產對象,而另外一個線程消費這些對象的場景。
下圖是對這個原理的闡述:
一個線程往里邊放,另外一個線程從里邊取的一個 BlockingQueue。
一個線程將會持續生產新對象并將其插入到隊列之中,直到隊列達到它所能容納的臨界點。也就是說,它是有限的。如果該阻塞隊列到達了其臨界點,負責生產的線程將會在往里邊插入新對象時發生阻塞。它會一直處于阻塞之中,直到負責消費的線程從隊列中拿走一個對象。負責消費的線程將會一直從該阻塞隊列中拿出對象。如果消費線程嘗試去從一個空的隊列中提取對象的話,這個消費線程將會處于阻塞之中,直到一個生產線程把一個對象丟進隊列。