日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

java 先入先出,java_阻塞队列(FIFO先进先出)

發(fā)布時(shí)間:2025/3/8 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 先入先出,java_阻塞队列(FIFO先进先出) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java_阻塞隊(duì)列(FIFO先進(jìn)先出)

ArrayBlockingQueue:由數(shù)組結(jié)構(gòu)組成的有界阻塞隊(duì)列;

LinkedBlockingQueue:由鏈表結(jié)構(gòu)組成的有界阻塞隊(duì)列(但大小默認(rèn)值為:Integer.MAX_VALUE);

PriorityBlockingQueue:支持優(yōu)先級(jí)排序的***阻塞隊(duì)列;

DelayQueue:使用優(yōu)先級(jí)隊(duì)列實(shí)現(xiàn)的延遲***阻塞隊(duì)列;

SynchronousQueue:不存儲(chǔ)元素的阻塞隊(duì)列,也即單個(gè)元素的隊(duì)列;

LinkedTransferQueue:由鏈表結(jié)構(gòu)組成的***阻塞隊(duì)列;

LinkedBlockingDeque:由鏈表結(jié)果組成的雙向阻塞隊(duì)列;

阻塞隊(duì)列核心方法

add(e):為阻塞隊(duì)列添加一個(gè)元素e,添加成功返回 true,當(dāng)阻塞隊(duì)列滿時(shí),拋出異常 java.lang.IllegalStateException: Queue full

remove():為阻塞隊(duì)列移除一個(gè)元素,移除成功時(shí)返回移除的元素,當(dāng)阻塞隊(duì)列為空時(shí),拋出異常?java.util.NoSuchElementException

element():檢查當(dāng)前阻塞隊(duì)列的首個(gè)元素,成功時(shí)返回首個(gè)元素,當(dāng)阻塞隊(duì)列為空時(shí),拋出異常?java.util.NoSuchElementException

offer(e):為阻塞隊(duì)列添加一個(gè)元素e,添加成功返回 true,當(dāng)阻塞隊(duì)列滿時(shí)返回?false

poll():為阻塞隊(duì)列移除一個(gè)元素,移除成功時(shí)返回移除的元素,當(dāng)阻塞隊(duì)列為空時(shí),返回 null

peek():檢查當(dāng)前阻塞隊(duì)列的首個(gè)元素,成功時(shí)返回首個(gè)元素,當(dāng)阻塞隊(duì)列為空時(shí),返回 null

put(e):為阻塞隊(duì)列添加一個(gè)元素e,無(wú)返回值,當(dāng)阻塞隊(duì)列滿時(shí)會(huì)阻塞線程,直到操作成功為止

take():為阻塞隊(duì)列移除一個(gè)元素,成功時(shí)返回首個(gè)元素,當(dāng)阻塞隊(duì)列為空時(shí)會(huì)阻塞線程,直到操作成功為止

offer(e,time,unit):為阻塞隊(duì)列添加一個(gè)元素e,添加成功返回?true,當(dāng)阻塞隊(duì)列滿時(shí)會(huì)阻塞隊(duì)列一段時(shí)間(time:long類型的時(shí)間,unit為時(shí)間單位),失敗返回?false

poll(time,unit):為阻塞隊(duì)列移除一個(gè)元素,移除成功時(shí)返回移除的元素,當(dāng)阻塞隊(duì)列為空時(shí),會(huì)阻塞隊(duì)列一段時(shí)間(time:long類型的時(shí)間,unit為時(shí)間單位),失敗返回??null

SynchronousQueue:不存儲(chǔ)元素的阻塞隊(duì)列

public?class?SynchronousQueueDemo?{public?static?void?main(String[]?args)?{

BlockingQueue?queue?=?new?SynchronousQueue<>();new?Thread(()?->{try?{

System.out.println(Thread.currentThread().getName()+"\t?put?1");

queue.put(1);

System.out.println(Thread.currentThread().getName()+"\t?put?2");

queue.put(2);

System.out.println(Thread.currentThread().getName()+"\t?put?3");

queue.put(3);

}?catch?(InterruptedException?e)?{

e.printStackTrace();

}

},"A").start();new?Thread(()?->{try?{try?{?TimeUnit.SECONDS.sleep(3);?}catch?(Exception?e){?e.printStackTrace();?}

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());try?{?TimeUnit.SECONDS.sleep(3);?}catch?(Exception?e){?e.printStackTrace();?}

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());try?{?TimeUnit.SECONDS.sleep(3);?}catch?(Exception?e){?e.printStackTrace();?}

System.out.println(Thread.currentThread().getName()+"\t"+queue.take());

}?catch?(InterruptedException?e)?{

e.printStackTrace();

}

},"B").start();

}

}

總結(jié)

以上是生活随笔為你收集整理的java 先入先出,java_阻塞队列(FIFO先进先出)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。