java也算是原生的支持多线程吧,但是如何让线程执行完成之后能够有返回值返回到主线程呢。。。?
一般情况下线程是实现runable接口,但是如果想要返回值的话那么就应该实现Callable接口了。。。
好了,还是不多说废话,直接上一个简单的例子就好了。。。
package fjs;
import java.util.ArrayList;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
class TaskWithResult implements Callable<String> {
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
return "aaaa";
}
}
public TaskWithResult TaskWithResult() {
return new TaskWithResult();
}
public static void main(String args[]) throws InterruptedException, ExecutionException {
Main main = new Main();
ExecutorService exec = Executors.newCachedThreadPool();
ArrayList<Future<String>> results = new ArrayList<Future<String>>(); //最后的返回值就将会保存在Futuer变量中
for (int i = 0; i < 10; i++) {
results.add(exec.submit(main.TaskWithResult())); //用submit来提交task
}
for (Future<String> f : results) {
System.out.println(f.get()); //如果线程还没有执行完成的话,那么get方法将会阻塞,直到有返回值
}
}
}

本文详细介绍了在Java中使用Callable接口实现多线程任务,并通过Future获取返回值的方法,通过实例展示了如何在一个简单的多线程场景中获取线程执行结果。
1869

被折叠的 条评论
为什么被折叠?



