fork-join排队网络_java fork join原理_forkjoinpool源码分析(3)

电脑杂谈  发布时间:2017-04-10 17:01:49  来源:网络整理

else {

int pivot = partition(array, start, end);

new SortTask(array, start, pivot - 1).fork();

new SortTask(array, pivot 1, end).fork();

}

}

forkjoinpool源码分析_fork-join排队网络_java fork join原理

private int partition(long[] array, int start, int end) {

long x = array[end];

int i = start - 1;

for (int j = start; j < end; j) {

if (array[j] <= x) {

i;

swap(array, i, j);

}

}

swap(array, i 1, end);

return i 1;

}

private void swap(long[] array, int i, int j) {

if (i != j) {

long temp = array[i];

array[i] = array[j];

array[j] = temp;

}

}

private void sequentiallySort(long[] array, int lo, int hi) {

Arrays.sort(array, lo, hi 1);

}

}

@Test

public void run() throws InterruptedException {

ForkJoinPool forkJoinPool = new ForkJoinPool();

Random rnd = new Random();

long[] array = new long[SIZE];

for (int i = 0; i < SIZE; i) {

array[i] = rnd.nextInt();

}

forkJoinPool.submit(new SortTask(array));

forkJoinPool.shutdown();

forkJoinPool.awaitTermination(1000, TimeUnit.SECONDS);

for (int i = 1; i < SIZE; i) {

assertTrue(array[i - 1] < array[i]);

}

}

动手尝试

Fork/Join框架的代码已经整合到了最新的JDK7的Binary Snapshot Releases中,可以通过这个地址下载。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-40544-3.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...