java synchronized加载加锁-线程可重入详解及实例代码
2017-02-17 11:47
781 查看
java synchronized加载加锁-线程可重入
实例代码:
public class ReGetLock implements Runnable { @Override public void run() { get(); } public synchronized void get() { System.out.println(Thread.currentThread().getId()); set(); } public synchronized void set() { System.out.println(Thread.currentThread().getId()); } public static void main(String[] args) { ReGetLock rgl = new ReGetLock(); new Thread(rgl).start(); } }
执行代码的线程到底能不能进入到set方法呢?
因为线程rgl先调用了get方法,获取到了ReGetLock对象的锁,那么当线程rgl想进入标有synchronized 关键字的set方法时,会被阻塞住,一直等待吗?
其实是不会的,在JAVA里面,当某个线程试图获得一个已经由它自己持有的锁,那么这个请求会成功。不然会出现死锁。
因此像synchronized 这种加锁机制,线程是可重入的。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- java懒加载创建实例代码详解
- java 线程公平锁与非公平锁详解及实例代码
- java 类加载机制和反射详解及实例代码
- Java反射代码--01.通过类名称加载一个类并且获取当前类实例
- Java加载JDBC驱动程序实例详解
- Java线程同步:synchronized锁住的是代码还是对象
- Java线程同步:synchronized锁住的是代码还是对象
- Java线程及同步(synchronized)样例代码
- JAVA synchronized详解 实例
- Java线程(初级)——synchronized、死锁、wait、notify详解
- java正则表达式语法详解及其使用代码实例
- java线程之synchronized的用法详解
- Java线程同步:synchronized锁住的是代码还是对象
- Java中获取文件大小的详解及实例代码
- Java设计模式之装饰者模式详解和代码实例
- java synchronized理论和实例详解
- java连接oracle数据库代码实例(注释详解)
- Java线程同步:synchronized锁住的是代码还是对象
- 跟着实例学习java多线程2-synchronized锁住的是对象还是代码
- Java线程同步:synchronized锁住的是代码还是对象