请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

houcx

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 673|回复: 0

重入锁:ReentrantLock 详解

[复制链接]

235

主题

237

帖子

1189

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1189
发表于 2018-8-23 20:39:52 | 显示全部楼层 |阅读模式
import java.util.concurrent.locks.ReentrantLock;public class KillDeadlock implements Runnable{    public static ReentrantLock lock1 = new ReentrantLock();    public static ReentrantLock lock2 = new ReentrantLock();    int lock;    public KillDeadlock(int lock) {        this.lock = lock;    }    @Override    public void run() {        try {            if (lock == 1) {                lock1.lockInterruptibly();  // 以可以响应中断的方式加锁                try {                    Thread.sleep(500);                } catch (InterruptedException e) {}                lock2.lockInterruptibly();            } else {                lock2.lockInterruptibly();  // 以可以响应中断的方式加锁                try {                    Thread.sleep(500);                } catch (InterruptedException e) {}                lock1.lockInterruptibly();            }        } catch (InterruptedException e) {            e.printStackTrace();        } finally {            if (lock1.isHeldByCurrentThread()) lock1.unlock();  // 注意判断方式            if (lock2.isHeldByCurrentThread()) lock2.unlock();            System.err.println(Thread.currentThread().getId() + "退出!");        }    }    public static void main(String[] args) throws InterruptedException {        KillDeadlock deadLock1 = new KillDeadlock(1);        KillDeadlock deadLock2 = new KillDeadlock(2);        Thread t1 = new Thread(deadLock1);        Thread t2 = new Thread(deadLock2);        t1.start();t2.start();        Thread.sleep(1000);        t2.interrupt(); // ③    }}


来自:https://blog.csdn.net/Somhu/article/details/78874634
[发帖际遇]: 一个袋子砸在了 admin 头上,admin 赚了 2 金钱. 幸运榜 / 衰神榜
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|houcx ( 京ICP备15004793号  

GMT+8, 2019-9-16 04:54 , Processed in 0.056590 second(s), 25 queries .

Powered by houcx! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表