gpt4 book ai didi

java - 如何限制方法调用以允许线程完成

转载 作者:行者123 更新时间:2023-12-02 06:42:49 26 4
gpt4 key购买 nike

我目前有以下设置。运行一段时间后,我遇到了内存异常;我怀疑 main 中的 for 循环导致了过多的备份方法调用。如果我不想增加线程池大小,限制调用的最佳方法是什么?

public class ManagedThreads {
private final static ExecutorService ex = Executors.newFixedThreadPool(10);

public static void myMethod(final int i) {
ex.execute(new Runnable() {
public void run() {
// method body using i
}
});
}

public static void main(String[] args) {
for (int i = 0; i < 1000000000; ++i)
myMethod(i);
}
}

编辑

我的意思是表明我正在将循环的索引传递给可运行对象。

最佳答案

您有十个线程,因此添加十个作业,并且您在尝试调度它们时永远不会耗尽内存。

例如

public class ManagedThreads {
private final static ExecutorService ex = Executors.newFixedThreadPool(10);

public static void myMethod(final int i) {
ex.execute(new Runnable() {
public void run() {
// do every tenth task.
for(int j = i; j < 1000000000; j += 10) {
// method body
}
}
});
}

public static void main(String[] args) {
for (int i = 0; i < 10; ++i)
myMethod(i);
}
}

关于java - 如何限制方法调用以允许线程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18967099/

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