import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class CallableExample {
public static void main(String[] args) {
// 创建一个实现了 Callable 接口的对象,该接口的 call 方法可以返回结果并抛出异常
Callable<Integer> task = new Callable<Integer>() {
@Override
public Integer call() throws Exception {
System.out.println("Callable task is running...");
// 模拟任务处理
Thread.sleep(2000);
return 123; // 返回计算结果
}
};
// 使用 FutureTask 来包装 Callable 对象
FutureTask<Integer> futureTask = new FutureTask<>(task);
// 创建线程并启动
Thread thread = new Thread(futureTask);
thread.start();
try {
// 获取任务执行结果
Integer result = futureTask.get();
System.out.println("Result: " + result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
}
Runnable
类似,但 Callable
可以返回结果并且可以抛出受检异常。call()
方法是 Callable
接口中定义的方法。Callable
或 Runnable
对象,并且可以通过 get()
方法获取任务的结果。FutureTask
包装的任务传递给 Thread
,然后启动线程。futureTask.get()
方法来获取任务执行的结果,这个方法会阻塞直到任务完成。这段代码展示了如何使用 Callable
来创建一个可以返回结果的任务,并使用 FutureTask
来管理任务的执行和结果获取。
上一篇:java reduce
下一篇:java 字符串转int
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站