java使用多线程操作,需要获取在A线程的返回结果,在B线程中使用,怎么做
时间: 2024-03-05 12:52:28 浏览: 17
在Java中,可以通过等待线程执行完毕并获取返回结果来实现在多个线程之间共享数据。具体实现方法如下:
1. 定义一个可共享的对象。可以是一个简单的数据类型,也可以是一个包含多个字段的自定义对象。
2. 在A线程中创建一个Callable对象,实现call()方法,在方法中执行任务并返回结果。
3. 在A线程中创建一个FutureTask对象,将Callable对象作为参数传入。
4. 在A线程中创建一个线程,并启动它,将FutureTask对象作为参数传入。
5. 在B线程中调用FutureTask对象的get()方法,等待A线程执行完毕并获取返回结果。
下面是一个示例代码:
```java
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class ThreadDemo {
public static void main(String[] args) throws InterruptedException, ExecutionException {
// 定义一个共享的对象
final MyObject obj = new MyObject();
// 在A线程中创建一个Callable对象
Callable<Integer> callable = new Callable<Integer>() {
@Override
public Integer call() throws Exception {
// 执行任务并返回结果
obj.setValue(100);
return obj.getValue();
}
};
// 在A线程中创建一个FutureTask对象
FutureTask<Integer> futureTask = new FutureTask<Integer>(callable);
// 在A线程中创建一个线程,并启动它
Thread thread = new Thread(futureTask);
thread.start();
// 在B线程中调用FutureTask对象的get()方法,等待A线程执行完毕并获取返回结果
int result = futureTask.get();
System.out.println("result = " + result);
}
static class MyObject {
private int value;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
}
```
在上面的代码中,A线程中的Callable对象执行了一个任务,并将结果存储到共享对象中。然后,B线程中通过调用FutureTask对象的get()方法等待A线程执行完毕并获取返回结果。最终,输出的结果为"result = 100"。