gpt4 book ai didi

java:需要将arg传递给线程run()而不使用承包商

转载 作者:行者123 更新时间:2023-12-01 11:11:18 26 4
gpt4 key购买 nike

我想要这样的东西:

public class WorkerThread implements Runnable {
int y;

public WorkerThread(int y) {
this.y = y;

}

@Override
public void run(int x) {
System.out.println(x+y);
}
}

在主目录

    ExecutorService executor = Executors.newFixedThreadPool(5);

for (int num: number) {
Runnable worker = new WorkerThread(num);
for (int anotherNum : anotherNumbers) {
executor.execute(worker.run(anotherNum));
}
}

我想要每个数字都有线程,并且我想使用另一个数字的参数来运行它。

我不能这样做,因为 run() 的签名中没有参数。

我还有什么其他选择?

请不要问我为什么需要它或试图质疑我在这里使用线程的原因。

最佳答案

public class WorkerThread implements Runnable {
int y;
int x;
public WorkerThread(int y, int x) {
this.y = y;

}
public void setX (int x)
{
this.x=x;
}
@Override
public void run(int x) {
System.out.println(x+y);
}
}

然后你从循环内调用 setX 方法,但是你的代码无论如何都不会工作,因为 executor.execute(worker.run(anotherNum)); 需要一个 Runnable,并且由于 run 是 void 它不会即使编译,我建议你执行以下操作

  for (int  anotherNum : anotherNumbers) {
Worker.setX(anotherNumbers);
executor.execute(worker);
}

关于java:需要将arg传递给线程run()而不使用承包商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32333825/

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