亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 JAVA 并行流時是否可以為每個線程傳遞資源?

使用 JAVA 并行流時是否可以為每個線程傳遞資源?

小怪獸愛吃肉 2022-05-21 13:55:56
我的問題真的很簡單,但我沒有找到明確回答的主題......(也許我錯過了......:o)。我想知道,在使用并行流時,是否可以為每個線程提供自定義數據(每個線程不同)。例如,我們可以想象我想知道哪個線程處理了哪個實體。例如:我有以下集合 [0,1,2,3,4,5] 我創建并行流并使用 map 方法使正方形與每個元素相關聯。我應該有以下輸出:[0,1,4,9,16,25] 但我想確定哪個線程處理了哪些實體,例如,如果我有 2 個線程:線程 1 -> [0,1,2]線程 2 -> [3,4,5]我希望我很清楚,在此先感謝那些愿意花時間回答我問題的人!
查看完整描述

1 回答

?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

您可以從Thread.currentThread()當前活動的上下文中獲取線程。


看到這個小片段:


final int[] ints = IntStream.range(0, 6)

    .parallel()

    .map(i -> {

        System.out.println("thread " + Thread.currentThread().getName() + " maps " + i + " to " + i * i);

        return i * i;

    })

    .toArray();


System.out.println("Final array " + Arrays.toString(ints));

打印如下內容:


thread main maps 5 to 25

thread ForkJoinPool.commonPool-worker-1 maps 2 to 4

thread ForkJoinPool.commonPool-worker-2 maps 3 to 9

thread ForkJoinPool.commonPool-worker-3 maps 0 to 0

thread main maps 1 to 1

thread ForkJoinPool.commonPool-worker-4 maps 4 to 16

Final array [0, 1, 4, 9, 16, 25]

雖然這不是確定性的,例如每次迭代都可能導致不同的打印結果


查看完整回答
反對 回復 2022-05-21
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號