[javascript学习指南]java synchronized加载加锁-线程可重入详解及实例代码

更新时间:2021-06-23    来源:js教程    手机版     字体:

【www.bbyears.com--js教程】

java synchronized加载加锁-线程可重入

实例代码:

 代码如下

publicclassReGetLockimplementsRunnable {

 

  @Override

  publicvoidrun() {

    get();

  }

 

  publicsynchronizedvoidget() {

    System.out.println(Thread.currentThread().getId());

    set();

  }

 

  publicsynchronizedvoidset() {

    System.out.println(Thread.currentThread().getId());

  }

 

  publicstaticvoidmain(String[] args) {

    ReGetLock rgl =newReGetLock();

    newThread(rgl).start();

  }

 

}

执行代码的线程到底能不能进入到set方法呢?

因为线程rgl先调用了get方法,获取到了ReGetLock对象的锁,那么当线程rgl想进入标有synchronized 关键字的set方法时,会被阻塞住,一直等待吗?

其实是不会的,在JAVA里面,当某个线程试图获得一个已经由它自己持有的锁,那么这个请求会成功。不然会出现死锁。

因此像synchronized 这种加锁机制,线程是可重入的。

本文来源:http://www.bbyears.com/wangyezhizuo/125495.html

猜你感兴趣

热门标签

更多>>

本类排行