1. 程式人生 > >30分鐘帶你瞭解阻塞佇列所有內容,再也不怕面試官刁難你了!(上)

30分鐘帶你瞭解阻塞佇列所有內容,再也不怕面試官刁難你了!(上)

## 30分鐘帶你瞭解阻塞佇列所有內容,再也不怕面試官刁難你了!(上) ### 目錄 * [1、概述](#abstract) * [2、BlockingQueue 原始碼解析](#blockingqueue) * [3、ArrayBlockingQueue 原始碼解析](#arrayblockingqueue) * [3-1、ArrayBlockingQueue 概述](#arrayblockingqueue_abstract) * [3-2、ArrayBlockingQueue 原始碼](#arrayblockingqueue_code) * [3-3、ArrayBlockingQueue 總結](#arrayblockingqueue_conclusion) * [4、LinkedBlockingQueue 原始碼解析](#linkedblockingqueue) * [4-1、LinkedBlockingQueue 概述](#linkedblockingqueue_abstract) * [4-2、LinkedBlockingQueue 原始碼](#linkedblockingqueue_code) * [4-3、LinkedBlockingQueue 總結](#linkedblockingqueue_conclusion) * [5、PriorityBlockingQueue 原始碼解析](#priorityblockingqueue) * [5-1、PriorityBlockingQueue 概述](#priorityblockingqueue_abstract) * [5-2、PriorityBlockingQueue 原始碼](#priorityblockingqueue_code) * [5-3、PriorityBlockingQueue 總結](#priorityblockingqueue_conclusion) **嘔心瀝血,耗費一週的時間來看原始碼,這麼優秀的博主你難道不關注一下?** ### 1、概述 今天在整理執行緒池的相關內容時,發現許多面試官對於阻塞佇列這塊內容問的還是挺挺深入的。事實上也是,公司招人的時候,總不會去招那些只會用,但是不知道為什麼的人吧。而且阻塞佇列是執行緒池的核心內容,因此我們將這塊內容給搞懂了,這樣才能在開發中遊刃有餘,在面試時鎮定自若。 然而在找尋相關部落格的時候,發現除了大部分部落格千篇一律的copy之外,一些原創部落格出現一些內容不全、不明原理、甚至內容重複的現象,這真的是對我們求知若渴的孩子的打擊。因此,我從 IDEA 中的類圖功能一個個找過去,給大家解讀原始碼,所以,這裡,**以我為準**。 先給大家看一下`BlockingQueue`的相關類的圖。(???為什麼是`BlockingQueue`?兄弟快去看看執行緒池建構函式的引數!) [](/Users/y1271752959m/Documents/WorkHardAndFindJob/複習/面試/images/2.png) ### 2、BlockingQueue 原始碼解析 `BlockingQueue`是一個介面,它繼承了`Queue`介面。然後下面是它的方法: ``` // 這裡我們看到 BlockingQueue 是一個泛型介面,但是我們線上程池中用的是 Runnable 介面也就是執行緒可執行動作。這裡瞭解一下 public interface Block