ReentrantLock显示锁
public class AttemptLocking {
/*
* public AttemptLocking() {
*
* System.out.println("构造器初始化...");
* }
*
* {
* System.out.println("init ...");
* }
*
* static {
* System.out.println("static init ");
* }
*/
private ReentrantLock reentrantLock = new ReentrantLock();
public void unTimed() {
boolean captured = reentrantLock.tryLock();
try {
System.out.println("try lock:" + captured);
} finally {
// TODO: handle finally clause
if (captured) {
reentrantLock.unlock();
}
}
}
public void timed() {
boolean captured = false;
try {
try {
captured = reentrantLock.tryLock(2, TimeUnit.SECONDS);
System.out.println("tryLock 2 Seconds " + captured);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} finally {
// TODO: handle finally clause
if (captured) {
reentrantLock.unlock();
}
}
}
public static void main(String[] args) {
final AttemptLocking attemptLocking = new AttemptLocking();
attemptLocking.unTimed();
attemptLocking.timed();
new Thread() {
{
setDaemon(true);
}
@Override
public void run() {
attemptLocking.reentrantLock.lock();
System.out.println("acquired");
};
}.start();
Thread.yield();// give the 2nd task a chance只是给另一个线程一个机会,并不保证另一个线程一定能得到资源
attemptLocking.unTimed();
attemptLocking.timed();
}
}
output:
p.p1 { margin: 0; font: 11px Monaco }
try lock:true
tryLock 2 Seconds true
acquired
try lock:false
tryLock 2 Seconds false
或
ReentrantLock显示锁的更多相关文章
- Java中的显示锁 ReentrantLock 和 ReentrantReadWriteLock
在Java1.5中引入了两种显示锁,分别是可重入锁ReentrantLock和可重入读写锁ReentrantReadWriteLock.它们分别实现接口Lock和ReadWriteLock.(注意:s ...
- 多线程并发编程之显示锁ReentrantLock和读写锁
在Java5.0之前,只有synchronized(内置锁)和volatile. Java5.0后引入了显示锁ReentrantLock. ReentrantLock概况 ReentrantLock是 ...
- 七 内置锁 wait notify notifyall; 显示锁 ReentrantLock
Object中对内置锁进行操作的一些方法: Java内置锁通过synchronized关键字使用,使用其修饰方法或者代码块,就能保证方法或者代码块以同步方式执行. 内置锁使用起来非常方便,不需要显式的 ...
- Java并发——显示锁
Java提供一系列的显示锁类,均位于java.util.concurrent.locks包中. 锁的分类: 排他锁,共享锁 排他锁又被称为独占锁,即读写互斥.写写互斥.读读互斥. Java的ReadW ...
- JAVA并发-基于AQS实现自己的显示锁
一.了解什么是AQS 原文链接:http://www.studyshare.cn/blog-front/blog/details/1131 AQS是AbstractQueuedSynchronizer ...
- 多线程安全问题之Lock显示锁
package com.hls.juc; import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.Reentr ...
- 显式锁(二)Lock接口与显示锁介绍
一.显式锁简介 显式锁,这个叫法是相对于隐式锁synchronized而言的,加锁和解锁都要用户显式地控制.显示锁Lock是在Java5中添加到jdk的,同synchronized一样,这也是一 ...
- Java多线程之内置锁与显示锁
Java中具有通过Synchronized实现的内置锁,和ReentrantLock实现的显示锁,这两种锁各有各的好处,算是互有补充,今天就来做一个总结. Synchronized 内置锁获得锁和释放 ...
- 6.显示锁Lock 和 线程通信Condition
显示锁 Lock 一.用于解决多线程 安全问题的方式: synchronized: 1.同步代码块 2.同步方法 jdk1.5 后:第三种:同步锁Lock (注意:同步(synchro ...
随机推荐
- day1(Django)
1,web项目工作流程 1.1 了解web程序工作流程 1.2 django生命周期 2,django介绍 目的:了解Django框架的作用和特点作用: 简便.快速的开发数据库驱动的网站 Djan ...
- day8(使用celery异步发送短信)
1.1在celery_task/mian.py中添加发送短信函数 # celery项目中的所有导包地址, 都是以CELERY_BASE_DIR为基准设定. # 执行celery命令时, 也需要进入CE ...
- 老猿学5G专栏文章目录
☞ ░ 前往老猿Python博文目录 ░ 一.3GPP规范文档及其他推荐阅读博文 老猿学5G扫盲贴:3GPP规范文档命名规则及同系列文档阅读指南 老猿学5G扫盲贴:3GPP规范中部分与计费相关的规范序 ...
- 第十三章 Python基础篇结束章
从2019年3月底开始学习Python,4月份开始在CSDN发博客,至今不到半年,老猿认为博客内容中关于Python基础知识的内容已经基本告一段落,本章进入Python基础知识结束章节,对Python ...
- COMMENT SQL二次注入
这题目太顶了进去随便发个贴,出现登录已经提示用户名和密码了,弱密码登录(得自己去爆破)zhangwei666即可 没啥思路,扫下目录试试,kali的dirb扫到.git泄露githacker得到源码看 ...
- fabric智能合约模板
以创建用户为例,我觉得基本都是这个框架,用特殊功能直接再往上加,欢迎留言交流 func createUser(stub shim.ChaincodeStubInterface, args []stri ...
- MySQL函数与存储过程
一.函数,参考博客:https://www.cnblogs.com/progor/p/8871480.html /* 函数:函数只会返回一个值,不允许返回一个结果集.函数强调返回值,所以不允许返回多个 ...
- 二叉排序树(BST)
二叉排序树(BST) 二叉排序树,又称二叉查找树(BST) 左子树结点值<根节点值<右子树结点值 如果用中序遍历来遍历一棵二叉排序树的话,可以得到一个递增的有序数列 左根右 二叉排序树的查 ...
- 一、安装LoadRunner12
今天接到任务最近要进行性能测试(刚开始搞自动化,有要搞性能测试,领导嫌我不忙吧),之前做接口测试用过Jmeter,也可以使用Jmeter做性能测试,但公司要求用LoadRunner,开始学习性能测试和 ...
- 五、Jmeter的目录结构
进入安装Jmeter可以看到路径 bin目录 jmeter.bat windows的启动文件 jmeter.log jmeter运行日志文件 jmeter.sh linux的启动文件 jmeter. ...