【Lock】加锁解锁

技术【Lock】加锁解锁 【Lock】加锁解锁@Slf4j
public class TestLock {public static void main(String[] args) throws Ex

【锁定】加锁解锁

@Slf4j

公共类TestLock {

公共静态void main(字符串[]参数)引发异常(

重入锁=新的重入锁(假);

string mainThreadName=thread。currentthread().getName();

系统。出去。println(‘======BEgin=====’);

尝试{

新线程(()-{ 0

字符串名称=Thread.currentThread().getName();

锁定。lock();//第一次加锁

System.out.println(‘1-1 ‘,’ lock。尝试lock());//第二次加锁

系统。出去。println(‘ 1-2 ‘,锁定。尝试lock());//第三次加锁

Thread.currentThread().’ setName(‘线程a ‘);

//未解锁前,剩余锁数量:3

锁定。unlock();//解锁,剩余锁数量:2

锁定。unlock();//解锁,剩余锁数量:1

锁定。unlock();//解锁,剩余锁数量:0

系统。出去。println(name ‘ lock。getholdcount : ‘锁。getholdcount());//打印:0

}).start();

新线程(()-{ 0

字符串名称=Thread.currentThread().getName();

尝试{

线。睡眠(200);

} catch(中断异常){ e

e。print stack trace();

}

系统。出去。println(‘ 2 ‘,锁定。尝试lock());

Thread.currentThread().’ setName(‘线程b’);

//System.out.println(名称);

如果(锁定。islocked()){ 0

系统。出去。println(name ‘=1=lock。getholdcount : ‘锁。getholdcount());

System.out.println(name ‘解锁’);

锁定。unlock();

系统。出去。println(name ‘=2=lock。getholdcount : ‘锁。getholdcount());

}

}).start();

新线程(()-{ 0

字符串名称=Thread.currentThread().getName();

尝试{

线。睡眠(200);//睡眠时间与线程B相同,下面lock.unlock()会报IllegalMonitorStateException

//线程。睡眠(400);//lock.unlock()不会报IllegalMonitorStateException

} catch(中断异常){ e

e。print stack trace();

}

系统。出去。println(‘ 3 ‘,锁定。尝试lock());

Thread.currentThread().’ setName(‘线程c ‘);

如果(锁定。islocked()){ 0

//因为睡眠时间相同,所以可能出现的情况:线程B获取到锁但还未解锁,再结合lock.isLocked()源码(任何线程),

//即锁还未被释放,进入判断后lock.unlock()失败,因为不符合:如果当前线程是该锁的持有者

System.out.println(name ‘解锁’);

锁定。unlock();

}

}).start();

}捕获(例外e){ 0

log.error(e.getMessage(),e);

}

系统。出去。println(‘ mainThreadName ‘锁。是锁定: ‘锁。is locked());

系统。出去。println(‘======END====’);

}

}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/100421.html

(0)

相关推荐

  • 豌豆角怎么做好吃,请问,豌豆尖怎么做好吃

    技术豌豆角怎么做好吃,请问,豌豆尖怎么做好吃烫火锅豌豆角怎么做好吃,炝炒豌豆角炒肉丝的做法是怎么做的?
    材料:豌豆角300克,红甜椒小半个,瘦肉100克,姜片少许做法:1、先将瘦肉切片;2、把切好的瘦肉片中加入酱油,糖和

    生活 2021年10月25日
  • 睡眠浅,入睡难,睡眠浅,如何改善

    技术睡眠浅,入睡难,睡眠浅,如何改善我听过一种说法,人之所以睡不着是因为大脑神经细胞异常兴奋活跃睡眠浅。这种说法是否有科学依据,也无从考证。不过,我比较认同这种说法。我曾经的经历也基本上和你类似,睡眠不好。有时整夜睡不着

    生活 2021年10月30日
  • 好看的宫斗剧排行榜,谁能推荐几部好看的宫斗剧

    技术好看的宫斗剧排行榜,谁能推荐几部好看的宫斗剧盘点十大好看的宫斗剧,第一名实至如归,让你再看几遍都不厌好看的宫斗剧排行榜。TOP.1 甄嬛传《甄嬛传》改编自流潋紫所著的同名小说。该剧由郑晓龙导演,流潋紫编剧,孙俪、陈建

    生活 2021年10月27日
  • 夜路,晚上走夜路150字作文

    技术夜路,晚上走夜路150字作文第一次走夜路_150字在记忆的大海中,一朵朵浪花拍打着海岸,又消失了夜路。可是,只有一朵浪花拍打着海岸,退去再打上海岸,再打上海岸,不断的从我的脑海重现那个第一次走夜路。记得在一个黑夜,我

    生活 2021年10月29日
  • leetcode二叉树的最大距离(leetcode合并两个二叉树)

    技术LeetCode如何找出两棵二叉搜索树中的所有元素这篇文章给大家分享的是有关LeetCode如何找出两棵二叉搜索树中的所有元素的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一,两棵

    攻略 2021年12月15日
  • 如何解析PHP的Invalid binding type问题

    技术如何解析PHP的Invalid binding type问题如何解析PHP的Invalid binding type问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能

    攻略 2021年10月23日