35 lines
1.2 KiB
Java
35 lines
1.2 KiB
Java
|
package bunny.async;
|
|||
|
|
|||
|
import java.util.concurrent.Callable;
|
|||
|
import java.util.concurrent.ExecutorService;
|
|||
|
import java.util.concurrent.Executors;
|
|||
|
import java.util.concurrent.Future;
|
|||
|
|
|||
|
public class CallableWithFutureTest {
|
|||
|
public static void main(String[] args) throws Exception {
|
|||
|
try (ExecutorService executorService = Executors.newSingleThreadExecutor()) {
|
|||
|
Callable<Integer> task = () -> {
|
|||
|
Thread.sleep(1000);
|
|||
|
return 42;
|
|||
|
};
|
|||
|
Future<Integer> future = executorService.submit(task);
|
|||
|
|
|||
|
// 是否完成
|
|||
|
boolean done = future.isDone();
|
|||
|
System.out.println("是否完成:" + done);
|
|||
|
|
|||
|
// 等待任务执行完成并获取结果,方法会阻塞,直到等到结果或者结果超时
|
|||
|
Integer result = future.get();
|
|||
|
|
|||
|
// 取消操作
|
|||
|
boolean cancel = future.cancel(true);
|
|||
|
System.out.println("是否取消:" + cancel);
|
|||
|
|
|||
|
// 是否在任务完成前取消,如果是返回true
|
|||
|
boolean cancelled = future.isCancelled();
|
|||
|
System.out.println("是否在任务完成前取消:" + cancelled);
|
|||
|
|
|||
|
System.out.println("任务结果: " + result);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|