java – 如何将参数传递给线程并获取返回值?
发布时间:2020-12-15 05:17:40 所属栏目:Java 来源:网络整理
导读:public class CalculationThread implements Runnable { int input; int output; public CalculationThread(int input) { this.input = input; } public void run() { output = input + 1; } public int getResult() { return output; }} 别的地方: Thread
public class CalculationThread implements Runnable {
int input;
int output;
public CalculationThread(int input)
{
this.input = input;
}
public void run() {
output = input + 1;
}
public int getResult() {
return output;
}
}
别的地方: Thread thread = new Thread(new CalculationThread(1)); thread.start(); int result = thread.getResult(); 当然,thread.getResult()不起作用(它试图从Thread类调用此方法). 你得到了我想要的东西.我怎样才能在Java中实现这一目标? 解决方法
这是线程池的工作.您需要创建一个Callable< R>这是Runnable返回一个值并将其发送到线程池.
该操作的结果是Future< R>.这是一个指向此作业的指针,它将包含计算值,如果作业失败则不会. public static class CalculationJob implements Callable<Integer> {
int input;
public CalculationJob(int input) {
this.input = input;
}
@Override
public Integer call() throws Exception {
return input + 1;
}
}
public static void main(String[] args) throws InterruptedException {
ExecutorService executorService = Executors.newFixedThreadPool(4);
Future<Integer> result = executorService.submit(new CalculationJob(3));
try {
Integer integer = result.get(10,TimeUnit.MILLISECONDS);
System.out.println("result: " + integer);
} catch (Exception e) {
// interrupts if there is any possible error
result.cancel(true);
}
executorService.shutdown();
executorService.awaitTermination(1,TimeUnit.SECONDS);
}
打印: result: 4 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
