网站开发建设公司地址,不要钱做网站软件,龙岗做网站哪里找,玮科网站建设推荐链接#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD… 推荐链接 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoDB】 总结——》【Elasticsearch】 Java——》synchronized的原理 snchronized是基于对象实现的JVM——》Java对象内存模型通过在对象头设置标记达到了获取锁和释放锁的目的。 synchronized 是由JVM实现的互斥同步的一种方式Java——》synchronized互斥性。查看被synchronized 修饰过的程序块编译后的字节码会发现在编译前后被编译器生成了monitorenter 和 monitorexit 两个字节码指令Java——》synchronized编译。
在虚拟机执行到monitorenter 指令时首先要尝试获取对象的锁。如果这个对象没有锁定或者当前线程已经拥有了这个对象的锁把锁的计数器1。如果获取对象失败了那当前线程就要阻塞等待直到对象锁被另外一个线程释放为止。当虚拟机执行到monitorexit 指令时将锁的计数器-1。 当计数器为0时锁就被释放了。