Java

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();
        }

    }
}

上一篇 下一篇

猜你喜欢

热点阅读