并发编程03_Fork/Join

本文介绍了等待超时模式,它在经典等待/通知范式的基础上增加了超时控制,提供了更好的灵活性。接着,讨论了Java的Fork/Join框架,用于将大任务拆分成独立的小任务并汇总执行结果。最后,提到了CountDownLatch闭锁,它是线程间协调的一种工具,允许一个线程等待其他线程完成工作。
摘要由CSDN通过智能技术生成

等待超时模式

开发人员经常会遇到这样的方法调用场景:调用一个方法时等待一段时间(一般来说是给定一个时间段),如果该方法能够在给定的时间段之内得到结果,那么将结果立刻返回,反之,超时返回默认结果。

等待/通知的经典范式,即加锁、条件循环和处理逻辑3个步骤,而这种范式无法做到超时等待。而超时等待的加入,只需要对经典范式做出非常小的改动,改动内容如下所示。假设超时时间段是T,那么可以推断出在当前时间System.currentTimeMillis()+t之后就会超时定义如下变量。

/*获取*/
    // 在mills内无法获取到连接,将会返回null 1S
    public Connection fetchConnection(long t)
            throws InterruptedException {
        synchronized (pool){
            //永不超时
            if(mills<=0){
                while(pool.isEmpty()){
                    pool.wait();
                }
                return pool.removeFirst();
            }else{
                /*超时时刻*/
                long future = System.currentTimeMillis()+t;
                /*等待时长*/
                long remaining = t;
                while(pool.isEmpty()&&remaining>0){
                    poo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值