java多线程中显式锁的轮询检测策略
显式锁简介
java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile,java5.0增加了一种新的机制:ReentrantLock。
锁像synchronized同步块一样,是一种线程同步机制,与synchronized不同的是ReentrantLock提供了一种无条件的、可轮询的、定时的以及可以中断的锁获取操作,并且所有的加锁和解锁的方法都是显式的,所以也叫显式锁。
synchronized的实现中包含了锁机制,但是锁的获取和释放不能人为的进行控制,所以当我们要定时获取锁,检测锁是否被占用时就应当使用显式锁。
显式锁涉及的类和接口
ReentrantLock实现了Lock接口,位于Java的J.U.C包中,包含了一下几个主要方法:
1、void lock(),获取锁;
2、void unlock
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java入门系列-25-NIO(实现非阻塞网络通信)
还记得之前介绍NIO时对比传统IO的一大特点吗?就是NIO是非阻塞式的,这篇文章带大家来看一下非阻塞的网络操作。 补充:以数组的形式使用缓冲区 package testnio; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class TestBufferArray { public static void main(String[] args) throws IOException { RandomAccessFile raf1=new RandomAccessFile("D:/1.txt","rw"); //1.获取通道 FileChannel channel1=raf1.getChannel(); //2.创建缓冲区数组 ByteBuffer buf1=ByteBuffer.allocate(512); ByteBuffer buf2=ByteBuffer.al...
- 下一篇
快进来看程序员风格的修真小说!
终有一天我手中的编译器将成为我灵魂的一部分,这世界在我的眼中将被代码重构,我将看到山川无尽银河生灵都汇成二进制的数字河流,过往英雄都在我脑海眼前一一浮现,而我听到无数码农跪倒在我的程序面前呼喊。 他们叫我代码之神。 到那个时候,我想我一定可以找回你。 一 这是一个属于代码的修真世界。 这世界里的每一个人,每一个东西,包括高山大海,刀剑风云,其本质都是一串数字流。 打个比方,如果你知道一块石头的内部数据结构,并且参透其中玄妙,你就能用程序和接口改变它的一切。如果能你参透自己自身这一个复杂的操作系统,就能重新编码自己,获得更大的能力。 所以你的程序水平的高低,决定了你的牛逼程度。 我们这些修真者,都叫程序员。 有人的地方,就有江湖。有江湖的地方,就有代码。 刚入门的时候,师傅跟我说,我们程序员修的,是一份境界。短短几句的代码里,要有最完美的逻辑,跟最精妙的算法。这本《算法导论》,你暂且拿去研修。 我们程序员,外修语言,内修算法。以数据为根,算天算地算自己。 听起来真的好酷。 但这个江湖,并不平静。几大门派,上有微软谷歌,下至百度阿里,每个门派风格迥异,明面上不曾和气,暗地里更有无数摩擦。 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7,CentOS8安装Elasticsearch6.8.6