可重入锁
来源:互联网 发布:虚拟仿真软件哪种好 编辑:程序博客网 时间:2024/06/06 06:30
本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。
可重入锁,也叫做递归锁,指的是同一线程 外层函数获得锁之后 ,内层递归函数仍然有获取该锁的代码,但不受影响。
下面的例子为非递归的例子,可重入锁也就是说加锁的主语是线程而不是方法调用
下面是使用实例
public class Test implements Runnable{public synchronized void get(){System.out.println(Thread.currentThread().getId());set();//虽然set()方法有 synchronized关键字,但是因为该线程已经获得了锁,那么仍然可以再次进入自己已经获得的锁}public synchronized void set(){System.out.println(Thread.currentThread().getId());}@Overridepublic 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();}}
输出结果为:
8
8
10
10
9
9
即同一个线程输出两次
0 0
- 可重入锁
- 可重入锁
- 可重入锁
- 可重入锁
- 可重入锁
- 可重入锁
- 可重入锁 ReentrantLock
- 什么是可重入锁
- java可重入锁
- ReentrantLock可重入锁
- ReentrantLock可重入锁
- java可重入锁
- ReentrantLock(可重入锁)
- Java-可重入锁
- 可重入锁 ReentrantLock
- Java 可重入锁
- ReentrantLock可重入锁
- 可重入锁 -- ReadWriteLock
- iOS Programming – 触摸事件处理(1)
- 开机启动遇到grub rescue,无法启动系统怎么办
- 基于OAuth2.0协议的QQ第三方授权登录iOS代码分析
- Common Subsequence经典DP,最长公共子序列
- UVa 540 queue的使用
- 可重入锁
- CSS 控制table 滑动及调整列宽等问题总结
- 事件
- socket案例
- 移动硬盘属性0字节RAW,双击提示磁盘未格式化怎么恢复?
- Java之美[从菜鸟到高手演练]之深入了解Struts2返回JSON数据的原理及具体应用范例
- JS学习笔记下
- poj 2353——Stars
- 找出从自然数1、2、... 、n(0<n<10)中任取r(0<r<=n)个数的所有组合