首页 > 开发 > Java > 正文

java synchronized加载加锁-线程可重入详解及实例代码

2024-07-13 10:04:12
字体:
来源:转载
供稿:网友

javascript/25699.html">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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表