用Java写一个多线程异步查询方法
时间: 2024-09-14 12:17:32 浏览: 25
在Java中,可以使用`ExecutorService`和`Callable`接口来编写一个多线程异步查询方法。`Callable`允许你在后台计算并返回结果,而不仅仅是简单地返回一个值。下面是一个简单的例子:
```java
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
public class AsyncQueryTask implements Callable<String> {
private int id; // 查询数据的ID
public AsyncQueryTask(int id) {
this.id = id;
}
@Override
public String call() throws Exception {
// 这里模拟异步查询过程,实际可能是数据库操作或其他耗时任务
Thread.sleep(2000); // 模拟延时
return "查询结果 for ID: " + id;
}
}
public class Main {
public static void main(String[] args) {
ExecutorService executor = Executors.newSingleThreadExecutor(); // 创建单线程执行服务
Future<String> future = executor.submit(new AsyncQueryTask(1)); // 提交任务
try {
System.out.println("开始查询...");
String result = future.get(); // 等待结果完成
System.out.println("查询结果: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
} finally {
executor.shutdown(); // 关闭执行服务
}
}
}
```
在这个例子中,`AsyncQueryTask`实现了`Callable`接口,它的`call()`方法将在单独的线程上执行。`main`方法提交任务到`ExecutorService`,然后主线程会继续运行,直到查询结果可用时才获取。