java synchronized的实现原理
时间: 2023-09-07 13:14:13 浏览: 133
Java中synchronized实现原理详解
5星 · 资源好评率100%
在Java中,synchronized关键字是实现线程安全的一种方式,它的实现原理主要是依赖于对象监视器(monitor)的概念。
当进入synchronized代码块时,线程会尝试获取对象的监视器,如果监视器没有被其他线程占用,则当前线程可以获取到监视器,继续执行synchronized代码块。如果监视器已经被其他线程占用,则当前线程会被阻塞,等待其他线程释放监视器。
在Java虚拟机中,每个对象都有一个与之关联的监视器。当一个线程获取对象的监视器时,它就可以访问该对象的所有synchronized方法和代码块。当线程退出synchronized代码块时,它会释放对象的监视器,这样其他线程就可以获取监视器并访问synchronized方法和代码块。
需要注意的是,Java中的每个对象都有一个与之关联的监视器,因此不同的对象可以有不同的监视器。而对于类的静态方法和代码块,则是使用类的Class对象作为监视器。
另外,在Java 5之后,还提供了一种基于锁的并发方式:ReentrantLock。与synchronized相比,ReentrantLock提供了更多的功能和可定制性,但是使用也更加复杂。
阅读全文