gpt4 book ai didi

java - Java 线程中的 RejectedExecutionException

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:15 25 4
gpt4 key购买 nike

我正在用 java 编写一个多线程程序。我写过这样的东西

exec.execute(p)  // where p is a runnable task working on an array
print array
exec.shutdown

我面临的问题是数组被打印给出了正确的输出但是随后出现了被拒绝的执行异常我不明白为什么当线程已经处理并给出正确的输出时为什么会出现错误...

最佳答案

我认为您过早地关闭了执行程序。这是我认为您应该如何工作的示例。

public class Main {
public static void main(String[] args) throws Exception {

// the array to modify
final int[] array = new int[1000];

// start the executor (that modifies the array)
ExecutorService executor = Executors.newFixedThreadPool(10);

for (int i = 0; i < 1000; i++) {
final int c = i;
executor.execute(new Runnable() {
@Override
public void run() {
array[c] = c;
}
});
}

// wait for all tasks to quit
executor.shutdown();
while (!executor.awaitTermination(10, TimeUnit.SECONDS));

// print the array
System.out.println(Arrays.toString(array));
}
}

另请注意,同时处理同一个数组可能会导致不一致 - 您必须真正确定您没有在依赖于该数组的数组上进行处理。

关于java - Java 线程中的 RejectedExecutionException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com