@@ -1141,18 +1141,18 @@ class TestThread extends Thread {
1141
1141
1142
1142
BlockingQueue 的幾個主要操作為下:
1143
1143
1144
- #### ** 表 7 .1 BlockingQueue 的幾個操作**
1145
-
1146
- | 方法 | 說明
1147
- | :-- |
1148
- | add() | 加入元素,如果佇列是滿的,則丟出 IllegalStateException
1149
- | remove() | 傳回並從佇列移除元素,如果佇列是空的,則丟出 NoSuchElementException
1150
- | element() | 傳回元素,如果佇列是空的,則丟出 NoSuchElementException
1151
- | offer() | 加入元素並傳回 true,如果佇列是滿的,則傳回 false
1152
- | poll() | 傳回並從佇列移除元素,如果佇列是空的,則傳回 null
1153
- | peek() | 傳回元素,如果佇列是空的,則傳回 null
1154
- | put() | 加入元素,如果佇列是滿,就 block
1155
- | take() | 傳回並移除元素,如果佇列是空的,就 block
1144
+ #### ** 表 15 .1 BlockingQueue 的幾個操作**
1145
+
1146
+ | 方法 | 說明 |
1147
+ | :--- | :--- |
1148
+ | add() | 加入元素,如果佇列是滿的,則丟出 IllegalStateException |
1149
+ | remove() | 傳回並從佇列移除元素,如果佇列是空的,則丟出 NoSuchElementException |
1150
+ | element() | 傳回元素,如果佇列是空的,則丟出 NoSuchElementException |
1151
+ | offer() | 加入元素並傳回 true,如果佇列是滿的,則傳回 false |
1152
+ | poll() | 傳回並從佇列移除元素,如果佇列是空的,則傳回 null |
1153
+ | peek() | 傳回元素,如果佇列是空的,則傳回 null |
1154
+ | put() | 加入元素,如果佇列是滿,就 block |
1155
+ | take() | 傳回並移除元素,如果佇列是空的,就 block |
1156
1156
1157
1157
在 java.util.concurrent 下提供幾種不同的 BlockingQueue,ArrayBlockingQueue 要指定容量大小來建構。LinkedBlockingQueue 預設沒有容量上限,但也可以指定容量上限。PriorityBlockingQueue 嚴格來說不是 Queue,因為它是根據優先權(Priority)來移除元素。
1158
1158
@@ -1244,6 +1244,7 @@ public class ConsumerQueue implements Runnable {
1244
1244
}
1245
1245
}
1246
1246
}
1247
+
1247
1248
```
1248
1249
1249
1250
由於 BlockingQueue 不再是由您來控制了,所以在這邊就沒有特意顯示訊息以表示生產者、消費者放入產品至 Queue 的訊息,不過您仍可以在 ProducerQueue 與 ConsumerQueue 中放入相關訊息顯示,以確認程式確實有在運作。
@@ -1367,10 +1368,10 @@ java.util.concurrent.FutureTask 是個代理,真正執行找質數的是 Calla
1367
1368
有時候您需要建立一堆執行緒來執行一些小任務,然而頻繁的建立執行緒有時會是個開銷,因為執行緒的建立必須與作業系統互動,如果能建立一個執行緒池(Thread pool)來管理這些小的執行緒並加以重複使用,對於系統效能會是個改善的方式。
1368
1369
您可以使用 Executors 來建立執行緒池,Executors 有幾個靜態(static)方法,列出如下:
1369
1370
1370
- #### ** 表 7 .2 Executors 幾個靜態方法**
1371
+ #### ** 表 15 .2 Executors 幾個靜態方法**
1371
1372
1372
- | 方法 | 說明
1373
- | :--- |
1373
+ | 方法 | 說明
1374
+ | :--- | :---
1374
1375
| newCachedThreadPool() | 建立可以快取的執行緒,每個執行緒預設可idle的時間為60秒
1375
1376
| newFixedThreadPool() | 包括固定數量的執行緒
1376
1377
| newSingleThreadExecutor() | 只有一個執行緒,循序的執行指定給它的每個任務
0 commit comments