ReentranLock(重入锁)
2020-03-06 本文已影响0人
TZX_0710
ReenTranLock是什么?
ReentrantLock 是一把可重入锁和互斥锁,它具有与 synchronized 关键字相同的含有隐式监视器锁(monitor)的基本行为和语义,但是它比 synchronized 具有更多的方法和功能。
直接代码解释
package com.company;
import java.util.concurrent.locks.ReentrantLock;
/**
* @author reality
* @title: MyFailLock
* @projectName ReentrantLock
* @description: TODO
* @date 2020/1/8 11:08
*/
public class MyFailLock extends Thread{
//创建公平锁 true为公平锁 false 为非公平所
//公平锁获取锁的机会是相同的 按照顺序访问
//非公平锁 不保证按照顺序访问
private ReentrantLock reentrantLock=new ReentrantLock( true );
//ReentrantLock提供了 构造函数, 默认参数为false,传true表示创建一个公平锁
//private ReentrantLock reentrantLock=new ReentrantLock( true );
//创建一个测试方法
public void failLock(){
try {
reentrantLock.lock();
System.out.println(Thread.currentThread().getName()+"正在持有锁");
}finally {
System.out.println(Thread.currentThread().getName()+"释放了锁");
reentrantLock.unlock();
}
}
public static void main(String[] args) {
//创建对象
MyFailLock myFailLock=new MyFailLock();
//实现一个runnable对象
Runnable runnable=()->{
System.out.println(Thread.currentThread().getName()+"启动");
//执行
myFailLock.failLock();
};
//创建1一个数组
Thread[]threads=new Thread[10] ;
//创建10个对象
for (int i=0;i<10;i++){
threads[i]=new Thread( runnable );
}
//循环10次开始启动执行
for ( int i=0;i<10;i++){
threads[i].start();
}
}
}