本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接
“synchronized”是什么意思?
我对synchronized关键字的用法和重要性有一些疑问。
synchronized关键字的意义是什么?
什么时候应该使用方法synchronized?
从程序上和逻辑上是什么意思?
高分回答:
该synchronized关键字是所有不同的线程读取和写入相同的变量,对象和资源。这不是Java中的琐碎话题,但以下是Sun的引文:
synchronized 方法提供了一种防止线程干扰和内存一致性错误的简单策略:如果一个对象对一个以上线程可见,则对该对象变量的所有读取或写入均通过同步方法完成。
简而言之:当有两个线程正在读取和写入同一个“资源”时,说一个名为的变量foo,则需要确保这些线程以原子方式访问该变量。如果没有synchronized关键字,线程1可能看不到线程2对所做的更改foo,或者更糟的是,它可能只更改了一半。这在逻辑上不会是您所期望的。
同样,这是Java中不平凡的话题。要了解更多信息,请在SO和Interwebs上探索有关以下主题:
继续探索这些主题,直到名称“ Brian Goetz”与大脑中的“并发”一词关联。
文章翻译自 yl2gl72eozkinivz3vc6swkesy-ac4c6men2g7xr2a-translate.translate.goog/questions/1…
作者建议:说到synchronized不得不说它的锁升级过程、包括对象头的一些基本知识,它与Reentrentlock的对比,可以了解下重入锁、公平锁、非公平锁、是否可响应中断、是否会超时等待、是否可以尝试加锁、是否需要手动释放锁、Reentrentlock的AQS原理,它怎么实现公平与非公平的(链表)
当然,这只是内存锁,在微服务的情况下,我们有时候需要引用分布式锁,例如redisson实现的分布式锁,它的重入性、可续约(调度线程池)、可阻塞的优点,当然还有其他的特性。
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️