“synchronized”是什么意思?推荐| Java Debug 笔记

199 阅读2分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看活动链接

“synchronized”是什么意思?

我对synchronized关键字的用法和重要性有一些疑问。

synchronized关键字的意义是什么?
什么时候应该使用方法synchronized?
从程序上和逻辑上是什么意思?

高分回答:

很多的知识点,真的需要写出来才会掌握!!! \color{purple}很多的知识点,真的需要写出来才会掌握!!!{~}

该synchronized关键字是所有不同的线程读取和写入相同的变量,对象和资源。这不是Java中的琐碎话题,但以下是Sun的引文:

synchronized 方法提供了一种防止线程干扰和内存一致性错误的简单策略:如果一个对象对一个以上线程可见,则对该对象变量的所有读取或写入均通过同步方法完成。

简而言之:当有两个线程正在读取和写入同一个“资源”时,说一个名为的变量foo,则需要确保这些线程以原子方式访问该变量。如果没有synchronized关键字,线程1可能看不到线程2对所做的更改foo,或者更糟的是,它可能只更改了一半。这在逻辑上不会是您所期望的。

同样,这是Java中不平凡的话题。要了解更多信息,请在SO和Interwebs上探索有关以下主题:

并发

Java内存模型

继续探索这些主题,直到名称“ Brian Goetz”与大脑中的“并发”一词关联。

文章翻译自 yl2gl72eozkinivz3vc6swkesy-ac4c6men2g7xr2a-translate.translate.goog/questions/1…

作者建议:说到synchronized不得不说它的锁升级过程、包括对象头的一些基本知识,它与Reentrentlock的对比,可以了解下重入锁、公平锁、非公平锁、是否可响应中断、是否会超时等待、是否可以尝试加锁、是否需要手动释放锁、Reentrentlock的AQS原理,它怎么实现公平与非公平的(链表)

当然,这只是内存锁,在微服务的情况下,我们有时候需要引用分布式锁,例如redisson实现的分布式锁,它的重入性、可续约(调度线程池)、可阻塞的优点,当然还有其他的特性。

欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!! \color{red}欢迎关注我的专栏StackOverFlow,我会筛选优质的问答,面试常考!!!{~}

有最新、优雅的实现方式,我也会在文末写出我对本问答的见解 \color{red}有最新、优雅的实现方式,我也会在文末写出我对本问答的见解{~}

真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话

求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️