java多线程中获取返回结果
时间: 2023-12-30 08:23:01 浏览: 38
在Java多线程中获取返回结果,可以使用以下两种方式:
1.使用Callable和Future
Callable接口类似于Runnable接口,但是它可以返回一个结果,并且可以抛出异常。Future接口表示异步计算的结果,提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。
下面是一个使用Callable和Future获取返回结果的例子:
```java
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class CallableDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException {
Callable<Integer> callable = new Callable<Integer>() {
@Override
public Integer call() throws Exception {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
return sum;
}
};
FutureTask<Integer> futureTask = new FutureTask<>(callable);
new Thread(futureTask).start();
System.out.println("计算结果为:" + futureTask.get());
}
}
```
2.使用join方法
join方法是Thread类提供的方法,它可以让一个线程等待另一个线程执行完成。在等待的过程中,当前线程会被阻塞,直到另一个线程执行完成。
下面是一个使用join方法获取返回结果的例子:
```java
public class JoinDemo {
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("计算结果为:" + sum);
}
});
thread.start();
thread.join();
System.out.println("线程执行完成");
}
}
```