Java锁之可重入锁介绍
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如synchronized和ReentrantLock等等)。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。
四、可重入锁:
本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。
可重入锁,也叫做递归锁,指的是同一线程外层函数获得锁之后,内层递归函数仍然有获取该锁的代码,但不受影响。
在JAVA环境下ReentrantLock和synchronized都是可重入锁。
下面是使用实例:
publicclassTestimplementsRunnable{
publicsynchronizedvoidget(){ System.out.println(Thread.currentThread().getId()); set(); }
publicsynchronizedvoidset(){ System.out.println(Thread.currentThread().getId()); }
@Override publicvoidrun(){ get(); } publicstaticvoidmain(String[]args){ Testss=newTest(); newThread(ss).start(); newThread(ss).start(); newThread(ss).start(); } }