java,fork
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
很多朋友都想知道java fork有什麼用?下面就一起來了解一下吧~
fork / join通過分而治之的方法嘗試使用所有可用的處理器內核來幫助加速並行處理 ,意味着框架“forks”遞歸地將任務分解爲較小的獨立子任務,直到它們足夠簡單以便異步執行。
其中所有子任務的結果以遞歸方式連接到單個結果中,或者在返回void的任務的情況下,程序只是等待直到執行完每個子任務。
爲了提供有效的並行執行,fork / join框架使用一個名爲ForkJoinPool的線程池,它管理ForkJoinWorkerThread類型的工作線程。
RecursiveAction - 一個例子
在下面的示例中,要處理的工作單元由稱爲工作負載的String表示。出於演示目的,該任務是一個荒謬的任務:它只是j簡單的轉爲大寫並打印它。
爲了演示框架的分支行爲,如果workload.length() 大於指定的閾值則使用createSubtask()方法,該示例將分割任務。
String被遞歸地劃分爲子串,創建基於這些子串的CustomRecursiveTask實例。
因此,該方法返回List <CustomRecursiveAction>。
使用invokeAll()方法將列表提交給ForkJoinPool:
public class CustomRecursiveAction extends RecursiveAction { private String workload = ""; private static final int THRESHOLD = 4; private static Logger logger = Logger.getAnonymousLogger(); public CustomRecursiveAction(String workload) { this.workload = workload; } @Override protected void compute() { if (workload.length() > THRESHOLD) { ForkJoinTask.invokeAll(createSubtasks()); } else { processing(workload); } } private List<CustomRecursiveAction> createSubtasks() { List<CustomRecursiveAction> subtasks = new ArrayList<>(); String partOne = workload.substring(0, workload.length() / 2); String partTwo = workload.substring(workload.length() / 2, workload.length()); subtasks.add(new CustomRecursiveAction(partOne)); subtasks.add(new CustomRecursiveAction(partTwo)); return subtasks; } private void processing(String work) { String result = work.toUpperCase(); logger.info("This result - (" + result + ") - was processed by " + Thread.currentThread().getName()); }}
此模式可用於開發自己的RecursiveAction類,如若要執行此操作,請創建一個表示工作總量的對象,選擇合適的閾值,定義分割工作的方法,並定義執行工作的方法。
-
微博怎麼顯示手機型號,微博如何顯示手機型號
微博怎麼顯示手機型號:1、首先需要點擊手機桌面中的微博。2、然後再點擊屏幕右下方的我的。3、然後再點擊屏幕上方的設置圖標。4、然後再點擊會員專屬設置。5、然後再點擊微博來源。6、最後選擇想要顯示的手機型號就可以了。...
-
信用卡的錢怎麼轉到微信,信用卡的錢轉到微信方法
1、信用卡需要先辦理現金轉出業務,先將額度轉賬到銀行卡里,再通過銀行卡充值的方法來轉到微信錢包中。因此,信用卡無法直接將額度轉賬到微信裏,中間必須通過銀行卡纔可以完成。信用卡綁定在微信中只可以用於消費,轉賬、發紅包都是不支持的。2、另外,信用卡綁定了微信...
-
載人火箭頂部有一個尖頂叫什麼塔
1、載人火箭頂部有一個尖頂叫逃逸塔,又名逃生塔,裝在飛船頂端,從遠處看像是火箭上的避雷針,與一般火箭圓錐形的頭部很不相同。2、由塔架、逃逸發動機和分離發動機(均爲固體火箭發動機)組成,發生緊急情況時,逃逸發動機迅速點火,使航天員座艙(返回艙)與固體火箭分離,迅速脫離...
-
蘋果手機怎麼縮圖
智能手機的拍照功能越來越好,拍出來的圖片也越來越清晰,用手機來記錄生活中的點滴已成爲了人們的日常習慣,而平時也會用手機對圖片進行一些簡單的處理,那麼,蘋果手機要怎麼縮小圖片尺寸呢?蘋果手機圖片尺寸可以通過郵件來進行調整。打開蘋果手機,在相冊中選擇需要調整...