lock.trylock_java中trycatch的用法

lock.trylock_java中trycatch的用法概述tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false,这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。代码@Test publicvoidtestTryLock(){ Locklock=newReentrantLock(); newThrea

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

概述

tryLock()方法是有返回值的,它表示用来尝试获取锁,如果获取成功,则返回true,如果获取失败(即锁已被其他线程获取),则返回false这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。


代码

@Test
	public void testTryLock() {
		Lock lock = new ReentrantLock();

		new Thread() {
			@Override
			public void run() {
				String tName = Thread.currentThread().getName();

				if (lock.tryLock()) {
					System.out.println(tName + "获取到锁!");
				} else {
					System.out.println(tName + "获取不到锁!");
					return;
				}

				try {

					for (int i = 0; i < 5; i++) {
						System.out.println(tName + ":" + i);
					}

					Thread.sleep(5000);
				} catch (Exception e) {
					System.out.println(tName + "出错了!!!");
				} finally {
					System.out.println(tName + "释放锁!!");
					lock.unlock();
				}

			}
		}.start();

		new Thread() {
			@Override
			public void run() {
				String tName = Thread.currentThread().getName();

				if (lock.tryLock()) {
					System.out.println(tName + "获取到锁!");
				} else {
					System.out.println(tName + "获取不到锁!");
					return;
				}

				try {
					for (int i = 0; i < 5; i++) {
						System.out.println(tName + ":" + i);
					}

				} catch (Exception e) {
					System.out.println(tName + "出错了!!!");
				} finally {
					System.out.println(tName + "释放锁!!");
					lock.unlock();
				}
			}
		}.start();
	}


运行结果

Thread-0获取到锁!
Thread-0:0
Thread-0:1
Thread-0:2
Thread-0:3
Thread-0:4
Thread-1获取不到锁!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/184100.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Redis客户端API

    Redis客户端APIRedis客户端APIclientsetNamexx为客户端设置名字clientlist列出与Redis服务端相连的所有客户端信息。info可查看Redis的所有信息。infomemory只查看Redis内存使用情况。infoclients记录了已连接客户端的信息限制redis连接maxclients、timeoutconfigsettimeout

  • 将图片转换为Base64编码字符串、解析Base64编码字符串后生成图片「建议收藏」

    将图片转换为Base64编码字符串、解析Base64编码字符串后生成图片「建议收藏」代码publicclassTest{publicstaticvoidmain(String[]args){//测试1:将图片转换成base64编码字符串Stringcode=imgToCode(“C:\\Users\\mingming\\Pictures\\Screenshots\\1.png”);System.out.println(“生成的base64编码字符串是:”+code);//测试

  • 走进webpack(2)–第三方框架(类库)的引入及抽离

    正文之前,由于这是一个系列的文章,可能第一次看到的看官老爷们会觉得突兀,如果你是webpack新手,我建议你先从前几篇文章看起,如果你对webpack有一些了解,也希望可以在github上下载代码,对

  • java heap space 什么意思_java内存溢出之Java heap space

    java heap space 什么意思_java内存溢出之Java heap space作为一个java程序员,大家都应该认识JVM。JVM作为java的核心,实在太重要了。而内存溢出又是程序员常遇到的错误之一,如果你对JVM的原理足够了解,那么解决这样的问题就不在是一件困难的事情。关于内存溢出,一般有下面这八个症状,本文将说明引发特定错误的原因,提供了可能导致此类错误的代码示例,并提供了解决方案的修复准则,希望对做开发的小伙伴能有一定的帮助。本篇是第1小篇。OutOfMemoryE…

  • STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)

    STM32CubeMX实战教程(三)——外部中断(中断及HAL_Delay函数避坑)前言学单片机的,相信对中断的概念都已经了如指掌了,中断具体是什么我在这里也就不再详细说明,不懂的上网找找也一大堆。那么在介绍实验之前我先跟大家简单讲讲STM32当中的NVIC(嵌套向量中断控制器)NVICNVIC(嵌套向量中断控制器)。NVIC就是控制中断响应的。主要由三个参数,一个是中断使能,一个是抢占优先级,还有一个就是响应优先级。(优先级数值越小,优先级别越高)中断使能很好理解,就是…

  • PAT考试一些注意事项[通俗易懂]

    有除法时,特别处理分母为0的情况 执行后发现卡住了,很有可能是scanf时忘记写&amp;了 if判断语句注意不要把==写成= 程序提交后显示超时,注意检查循环跳出情况,for中的i–是不是写成了i++ 判断素数时,i的取值范围[2,sqrt(a)],其中a是待判断的数 把ID当成int类型时,最后输出记得在前面添加0补齐 当图的节点有&gt;=10000个时,用邻接…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号