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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis oracle分页查询sql语句(oracle查询分页)

    java实现mysql分页查询1.前言1.mysql中分页用limit,但是limit后面不能跟表达式,错误表达式:limit(1-1)*10,10。2.对象中提供分页数据的方法。备注:limita,b表示从第a+1条开始取,本次一共取b条如limit0,10:取第1-10条数据,如limit25,8:去第26-33条数据。application.properties数据库Mysql配置#数据库配置spring.datasource.url=jdbc:mysql://loc

    2022年4月15日
    253
  • windows怎么设置多用户_windows开启多用户远程桌面

    windows怎么设置多用户_windows开启多用户远程桌面在实际使用我们较多使用的都是windows系统的单用户模式,它意味着当我们登录一个用户的时候如果另外一个用户也在登录,那么就得等待另外一个用户退出后才可以登录我们这个用户,但是实际需求中,我们经常会遇

    2022年8月4日
    17
  • 串口USART和UART「建议收藏」

    串口USART和UART「建议收藏」串口通信:UART是通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接受。UART主要用于主机与辅助设备通信。UART的功能计算器内部采用并行数据,不能直接把数据发到Modem,必须经过UART整理才能进行异步通信。也就是CPU把准备写入串行设备的数据放到UART的寄存器中,再通过FIFO(FirstInputFirstOutput,先入先出队列)传到串行设备,提供了RS232数据终端设备接口。UART的主要功能分为:1、将计算机内部传送过来的并行数据转换.

    2022年5月19日
    60
  • ViewPager,ScrollView 嵌套ViewPager滑动冲突解决

    ViewPager,ScrollView 嵌套ViewPager滑动冲突解决ViewPager,ScrollView嵌套ViewPager滑动冲突解决这篇博客主要讲解一下几个问题-粗略地介绍一下View的事件分发机制-解决事件滑动冲突的思路及方法-ScrollView里面嵌套ViewPager导致的滑动冲突-ViewPager里面嵌套ViewPager导致的滑动冲突-轮播图的几种实现方式先看一下效果图ScrollView里面嵌套View

    2022年7月22日
    9
  • string或binary数据将被截断_字符串截断错误

    string或binary数据将被截断_字符串截断错误Hibernate:insertintodis_txtfile(delivery,postationid,sn,id)values(?,?,?,?)2012-02-2111:28:53,481[main]WARN org.hibernate.util.JDBCExceptionReporter-SQLError:0,SQLState:220012

    2022年10月7日
    0
  • java的线程是用户态还是内核态_内核态和用户态的区别

    java的线程是用户态还是内核态_内核态和用户态的区别内核态用户态是什么?操作系统对程序的执行权限进行分级,分别为用户态和内核态。用户态相比内核态有较低的执行权限,很多操作是不被操作系统允许的,简单来说就是用户态只能访问内存,防止程序错误影响到其他程序,而内核态则是可以操作系统的程序和普通用户程序内核态:cpu可以访问计算机所有的软硬件资源用户态:cpu权限受限,只能访问到自己内存中的数据,无法访问其他资源为什么要有用户态和内核态?系统需要限制不同的程序之间的访问能力,防止程序获取不相同程序的内存数据,或者外围设备的数据,并发送到网络,所有cpu

    2022年9月14日
    0

发表回复

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

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