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获取不到锁!

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

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

(0)
上一篇 2022年10月9日 下午4:36
下一篇 2022年10月9日 下午4:36


相关推荐

  • Mybatis——foreach用法

    Mybatis——foreach用法在做 mybatis 的 mapper xml 文件的时候 时常遇到一些需要批量操作的情况 这个时候 mybatis 的 foreach 标签就派上用场了 foreach 元素的属性主要有 item index collection open separator close item 集合中元素迭代时的别名 该参数为必选 index 在 list 和数组中 index 是元素的序号 在 map 中 index 是元素的 key 该参数可选 open foreach 代码的开始符号 一般是 和 clos

    2026年1月25日
    4
  • 远程服务器mstsc命令,远程桌面连接命令mstsc怎么用

    远程服务器mstsc命令,远程桌面连接命令mstsc怎么用现在经常在家远程办公,肯会使用到远程桌面连接命令mstsc远程管理电脑或者服务器,,远程桌面连接命令mstsc的使用还是很简单的。但是对于没用过远程桌面连接命令的人来说,首次使用可能连需要进行设置都不清楚。小编在这将远程桌面连接命令mstsc的使用方法进行详细介绍首先需要对被远程控制的电脑A进行设置:1  在电脑A上点击【开始】—【控制面板】,找到【用户帐户】,点击进入后为当前用户账户创建密码,输…

    2025年5月26日
    3
  • instsrv.exe srvany.exe用法「建议收藏」

    instsrv.exe srvany.exe用法「建议收藏」nstsrv.exe——来自Windows 2000 Resource Kits的一个小工具  微软官方对该小工具的说明:Installs and uninstalls executable services and assigns names to them.显而易见,这个小工具是用以安装和卸载可执行的服务和指派服务名给这些可执行的服务的。那么怎么去使用呢?这里我们设定要将F

    2022年6月11日
    29
  • linux mysql mysql.sock(mysqldump命令详解)

    什么是socat?socat是一个实用的命令行工具。常用方法端口转发#端口转发#socat-d-d-lf/var/log/socat.logTCP4-LISTEN:6666,bind=127.0.0.1,reuseaddr,forkTCP:127.0.0.1:3306#mysql-uroot-h127.0.0.1-P6666-p文件写入#不使用group则默认当前用户soc…

    2022年4月10日
    139
  • airtest测试网页_Airtest

    airtest测试网页_Airtest软件简介 Airtest 是一个跨平台的 UI 自动化测试框架 适用于游戏和 App 目前支持 Windows 和 Android 平台 iOS 支持正在开发中 Airtest 提供了跨平台的 API 包括安装应用 模拟输入 断言等 基于图像识别技术定位 UI 元素 你无需嵌入任何代码即可进行自动化测试 测试脚本运行后可以自动生成详细的 HTML 测试报告 让你迅速定位失败的测试点 AirtestIDE 是一个强大的 GUI 工具

    2026年3月19日
    2
  • Linux下用Docker安全部署OpenClaw

    Linux下用Docker安全部署OpenClaw

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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