91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用CompletionService結合ExecutorService批處理任務

發布時間:2020-08-01 11:32:11 來源:網絡 閱讀:444 作者:劉元興 欄目:網絡安全

CompletionService用于提交一組Callable任務,其take方法返回已完成的一個Callable任務對應的Future對象。

如果你向Executor提交了一個批處理任務,并且希望在它們完成后獲得結果。為此你可以將每個任務的Future保存進一個集合,然后循環這個集合調用Future的get()取出數據。幸運的是CompletionService幫你做了這件事情。

CompletionService整合了Executor和BlockingQueue的功能。你可以將Callable任務提交給它去執行,然后使用類似于隊列中的take和poll方法,在結果完整可用時獲得這個結果,像一個打包的Future。

CompletionService的take返回的future是哪個先完成就先返回哪一個,而不是根據提交順序。

例子:

使用CompletionService結合ExecutorService批處理任務

 1 import java.util.Random; 2 import java.util.concurrent.Callable; 3 import java.util.concurrent.CompletionService; 4 import java.util.concurrent.ExecutionException; 5 import java.util.concurrent.ExecutorCompletionService; 6 import java.util.concurrent.ExecutorService; 7 import java.util.concurrent.Executors; 8   9 public class CallableAndFuture {10  11         public static void main(String[] args) {12               ExecutorService threadPool = Executors. newFixedThreadPool(10);13               CompletionService<Integer> completionService = new ExecutorCompletionService<Integer>(threadPool);14  15                for (int i = 0; i < 10; i++) {16                       final int seq = i;17                      System. out.println("開始提交第" + seq + "個任務");18                      completionService.submit( new Callable<Integer>() {19  20                             @Override21                             public Integer call() throws Exception {22                                   Thread. sleep(new Random().nextInt(5000));23                                    return seq;24                            }25                      });26               }27  28                for (int i = 0; i < 10; i++) {29                       try {30                             // 取出并移除表示下一個已完成任務的 Future,如果目前不存在這樣的任務,則等待。31                            Integer seq = completionService.take().get();32                            System. out.println("第" + seq + "個任務返回");33                      } catch (InterruptedException e) {34                            e.printStackTrace();35                      } catch (ExecutionException e) {36                            e.printStackTrace();37                      }38               }39        }40  41 }

使用CompletionService結合ExecutorService批處理任務

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

濮阳县| 江达县| 明星| 双鸭山市| 沅陵县| 平果县| 广水市| 辉南县| 体育| 镇坪县| 湘潭市| 贺兰县| 桑植县| 锦屏县| 平原县| 海晏县| 密山市| 雷州市| 云南省| 阿克| 沽源县| 全椒县| 沈丘县| 渝中区| 和静县| 河北省| 哈密市| 油尖旺区| 峨眉山市| 武胜县| 胶州市| 桦甸市| 噶尔县| 遂平县| 桃园市| 平利县| 兴化市| 墨玉县| 东宁县| 贡嘎县| 五寨县|