欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java fock 和exec

錢浩然1年前6瀏覽0評論

Java語言是一種功能強大的編程語言,它的多線程性能出眾,而且使用起來非常方便。在Java中,有兩種常見的多線程實現方法,它們分別是fork和exec。

// 使用fork實現多線程
public class ForkExample extends RecursiveTask{
private final int threshold = 500;
@Override
protected Integer compute() {
if (size< threshold) {
int sum = 0;
for (int i = 0; i< size; i++) {
sum += array[i];
}
return sum;
} else {
ForkExample left = new ForkExample(array, start, size / 2);
left.fork();
ForkExample right = new ForkExample(array, start + size / 2, size - size / 2);
int rightResult = right.compute();
int leftResult = left.join();
return leftResult + rightResult;
}
}
}
ForkJoinPool pool = new ForkJoinPool();
int sum = pool.invoke(new ForkExample(array, 0, array.length));

上面的代碼演示了如何使用Fork/Join框架的實現多線程。這種實現方法主要是通過將一個大的任務劃分成多個小的任務,然后多線程地執行這些小的任務,最后再將結果匯總。在Fork/Join框架中,有兩種重要的類,它們分別是ForkJoinTask和ForkJoinPool。

// 使用exec實現多線程
public class ExecExample {
public static void main(String[] args) throws Exception {
ExecutorService executor = Executors.newFixedThreadPool(5);
List>tasks = new ArrayList<>();
tasks.add(() ->{
int sum = 0;
for (int i = 0; i< 100; i++) {
sum += i;
}
return sum;
});
tasks.add(() ->{
int sum = 0;
for (int i = 100; i< 200; i++) {
sum += i;
}
return sum;
});
List>results = executor.invokeAll(tasks);
int sum = 0;
for (Futureresult : results) {
sum += result.get();
}
System.out.println("sum: " + sum);
executor.shutdown();
}
}
在上述示例中,我們首先創建了一個線程池,然后將任務添加到任務隊列中。最后,我們執行這些任務并等待它們的執行結果,并將多個線程的結果合并。