• 可重入锁


    可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。
    在JAVA环境下 ReentrantLock 和synchronized 都是 可重入锁。

    下面是使用实例:

    public class Test implements Runnable{
     public synchronized void get(){
      System.out.println(Thread.currentThread().getId());
      set();
     }
     public synchronized void set(){
      System.out.println(Thread.currentThread().getId());
     }
     @Override
     public void run() {
      get();
     }
     public static void main(String[] args) {
      Test ss=new Test();
      new Thread(ss).start();
      new Thread(ss).start();
      new Thread(ss).start();
     }
    }

    两个例子最后的结果都是正确的,即 同一个线程id被连续输出两次。

    结果如下:

    Threadid: 8
    Threadid: 8
    Threadid: 10
    Threadid: 10
    Threadid: 9
    Threadid: 9
    可重入锁最大的作用是避免死锁。
     
    引一篇例子,比较详细
  • 相关阅读:
    二 、异常
    Java的基本概念
    Oracle case when
    oracle exists
    一 、前言
    location
    HTTP1.1初识
    数学学习笔记(持续更新中)
    [NOIP2017 提高组] 列队 题解
    [NOI2019] 回家路线 题解
  • 原文地址:https://www.cnblogs.com/qiuhaojie/p/6973901.html
Copyright © 2020-2023  润新知