Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java异步线程

作者:旭旭移日   发布日期:2025-07-05   浏览:54

// 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();
    }
}

解释说明:

  1. ExecutorService:这是Java提供的线程池管理工具,可以方便地管理和调度线程。Executors.newFixedThreadPool(2) 创建了一个包含两个线程的线程池。

  2. Callable:与 Runnable 类似,但 Callable 可以返回结果并且可以抛出异常。在这个例子中,我们定义了一个 Callable<Integer> 任务,它会模拟一个耗时操作(如网络请求或文件读取),并最终返回一个整数结果。

  3. Future:当我们提交一个 Callable 任务给线程池时,submit() 方法会返回一个 Future 对象。通过 Future,我们可以在稍后获取任务的执行结果,或者检查任务是否已经完成。

  4. future.get():这个方法会阻塞当前线程,直到异步任务完成并返回结果。如果任务尚未完成,调用 get() 会一直等待,直到任务完成。

  5. executor.shutdown():当所有任务完成后,我们应该关闭线程池,以确保程序能够正常退出。

上一篇:javascrpt

下一篇:java使用websocket

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站