// Java异步线程示例代码
import java.util.concurrent.*;
public class AsyncThreadExample {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        // 创建一个线程池,这里使用的是固定大小为2的线程池
        ExecutorService executor = Executors.newFixedThreadPool(2);
        // 创建一个Callable任务,这个任务会在另一个线程中执行,并返回结果
        Callable<Integer> task = () -> {
            // 模拟耗时操作
            Thread.sleep(2000);
            return 123; // 返回计算结果
        };
        // 提交任务给线程池执行,并获取Future对象用于获取任务执行结果
        Future<Integer> future = executor.submit(task);
        System.out.println("主线程继续执行其他任务...");
        // 主线程可以继续做其他事情
        Thread.sleep(1000);
        // 获取异步任务的结果,如果任务还没有完成,则会阻塞等待直到任务完成
        Integer result = future.get();
        System.out.println("异步任务的结果是: " + result);
        // 关闭线程池
        executor.shutdown();
    }
}ExecutorService:这是Java提供的线程池管理工具,可以方便地管理和调度线程。Executors.newFixedThreadPool(2) 创建了一个包含两个线程的线程池。
Callable:与 Runnable 类似,但 Callable 可以返回结果并且可以抛出异常。在这个例子中,我们定义了一个 Callable<Integer> 任务,它会模拟一个耗时操作(如网络请求或文件读取),并最终返回一个整数结果。
Future:当我们提交一个 Callable 任务给线程池时,submit() 方法会返回一个 Future 对象。通过 Future,我们可以在稍后获取任务的执行结果,或者检查任务是否已经完成。
future.get():这个方法会阻塞当前线程,直到异步任务完成并返回结果。如果任务尚未完成,调用 get() 会一直等待,直到任务完成。
executor.shutdown():当所有任务完成后,我们应该关闭线程池,以确保程序能够正常退出。
上一篇:javascrpt
下一篇:java使用websocket
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站