future模式实现demo(Callable接口的实现)

本文详细介绍了如何使用Future模式来实现异步计算,并通过示例展示了Callable接口的具体用法,帮助读者理解并掌握这两种并发编程的重要工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package thread;

import org.junit.Test;
import sun.nio.ch.ThreadPool;

import java.util.Collection;
import java.util.Iterator;
import java.util.concurrent.*;

public class AsyncFuture {
    ThreadPoolExecutor threadPool=new ThreadPoolExecutor(
        5
        ,10
        ,5
        ,TimeUnit.SECONDS
        ,new LinkedBlockingDeque<Runnable>()
    );

    public String getResult() throws InterruptedException {
        System.out.println("子线程被调用,调用时间"+System.currentTimeMillis());
        Thread.sleep(3000);
        System.out.println("子线程任务结束时间"+System.currentTimeMillis());
        return "结果";
    }
    @Test
    public void futureDemo() throws Exception {
        //提交线程
        Future future=threadPool.submit(this::getResult);
        System.out.println("提交后,主线程休眠五秒");
        System.out.println("主线程开始时间"+System.currentTimeMillis());
        //休眠
        Thread.sleep(5000);
        System.out.println("主线程结束时间"+System.currentTimeMillis());
        //get():获取执行结果,重载可选参数,例:3000,TimeUnit.MILLISECONDS   ↙
        //在3000毫秒内获取结果,如果该时间内没有得到结果,抛出异常:TimeoutException
        System.out.println(future.get()+":"+System.currentTimeMillis());
    }
    void d2(){
        try {
            Thread.sleep(2000);
            System.out.println("子线程休眠完毕");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    @Test
    public void demo2() throws InterruptedException {
       new Thread(this::d2).start();
        Thread.sleep(5000);
        System.out.println("主线程执行完毕");
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值