阻塞棧和阻塞隊列類似,不同的是,阻塞棧是「後入先出」的結構。阻塞隊列是「先入先出」的結構,每次操作的都是隊列頭。
阻塞棧是Java6的新特徵。
Java爲阻塞棧定義了接口:java.util.concurrent.BlockingDeque,其實現類也比較多,具體可以查看JavaAPI文檔。
代碼如下:
public class Thread_Bdueue { public static void main(String args[]){ BlockingDeque blockingDeque=new LinkedBlockingDeque(20); for (int i=0;i<30;i++){ try { //指定元素添加到阻塞棧當中,如果沒有可用空間,則一直等待 blockingDeque.putFirst(i); System.out.println("向阻塞棧當中添加了元素:"+i); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("程序到此運行結束-------"); } }
運行結果如下:
從結果可以看出,當運行到19的時候, 程序並沒有結束,而是被阻塞住了,程序一直在等待。