Java 使用tryLock锁

使用tryLock时有两个情况,一般都是没拿到过就放弃线程,还有一种就是没拿到锁就继续获取锁,这里会把两种情况的示例都写下来

一:获取锁,没获取到锁的话放弃获取

    public static void main(String[] args) {
        final Lock lock=new ReentrantLock();
        if (lock.tryLock()) {
            try{
                //成功获取锁 执行代码
            }catch (Exception e){
                e.getCause();
            }finally {
                //释放锁
                lock.unlock();
            }
        }else{
            //获取锁失败 执行失败的逻辑
        }
    }

二:获取锁,没获取到锁的话循环重新获取锁

    public static void main(String[] args) {
        //重试次数
        int retryCount = 0;
        // 最大重试次数
        int maxRetries = 10;
        // 每次重试前的休眠时间(毫秒)
        int sleepTime = 500;
        while (retryCount < maxRetries) {
            if (lock.tryLock()) {
                try{
                    //成功获取锁 执行代码
                    //退出循环
                    break;
                }catch (Exception e){
                    e.getCause();
                }finally {
                    //释放锁
                    lock.unlock();
                }
            }else{
                retryCount++;
                try {
                    // 休眠一段时间后再循环获取锁
                    Thread.sleep(sleepTime);
                } catch (InterruptedException e) {
                    // 处理中断
                    Thread.currentThread().interrupt();
                }
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值