你所不知道的 Java synchronized 关键字

在本文开始前,先给大家分享几个好用的IDEA激活码

这里提供几个最新的激活码,有需要的朋友可以试试,先到先用:

2022和2023Intellij IDEA最新激活码,IDEA稳定专属激活码(持续更新)

2022和2023Pycharm激活码,Pycharm稳定专属激活码(持续更新)

2022和2023Webstorm激活码,Webstorm稳定专属激活码(持续更新)

2022和2023Phpstorm激活码,Phpstorm稳定专属激活码(持续更新)

2022和2023Goland激活码,Goland稳定专属激活码(持续更新)

 

接受采访时,我通常会问到Java 中的synchronized关键字,我从几乎每个人那里得到了正确的理论答案。这就是我收到答案的方式。如果一个块或一个方法是同步的,只有一个线程可以进入该方法并阻塞,另一个线程将等待直到前一个线程尚未退出该方法或块。

我询问了程序的行为。我要求读者在阅读博客的其余部分之前先猜测其行为。

大多数情况下,受访者会给出以下答案:

假设名为 Thread1 的线程 t1 进入同步块,它将打印“ Thread1 已进入同步块”。然后它将休眠 5 秒钟。同时,Thread2会在注释为第3行的行中等待,Thread1退出后,Thread2会进入block,打印“ Thread2 has entered the synchronized block ”并休眠5分钟,之后整个程序结束。

如果你的回答和上面一样,那么你就缺少对 synchronized 关键字的批判性理解。基本上,当我们使用 synchronized 关键字时,我们通常会锁定类的实例或 Class 对象(对于该类的所有实例只有一个)本身。在这种情况下,我们锁定了 this 关键字,这意味着 Task 类的实例。在第 1 行和第 2 行创建线程时,我们使用了 new Task(),这意味着同一类任务的两个不同对象。因此,Thread1 和 Thread2 已经在同一个类的不同实例上获取了锁,因此这两个线程将只使用自己的锁进入同步块,不会相互等待。所以,答案应该是

Thread1已经进入synchronized块。马上, Thread2 已经进入synchronized就会被打印出来。 两个线程将同时等待 5 秒,程序将终止。

然后,行为将与我首先解释的行为完全相同,即 Thread1 将打印Thread1 已进入同步块并等待 5 秒。退出后,Thread2 会打印Thread2 has entered the synchronized block and will sleep for 5 seconds。退出后,程序将终止。

这是一件非常小的事情,但是在准备面试或编写多线程代码时需要注意这一点。实现信号量、循环屏障、倒计时锁存器或可重入锁时也是如此。

希望你已经掌握了这篇博客的要点。

发布者:admin,转转请注明出处:https://www.ajihuo.com/soft/5560.html

(0)
上一篇 2023年6月16日 上午10:09
下一篇 2023年6月27日 上午6:50

相关推荐

  • IDEA2023激活码(IDEA最新激活码亲测有效)

    在本文开始前,先给大家分享几个好用的IDEA激活码 这里提供几个最新的激活码,有需要的朋友可以试试,先到先用: 2022和2023Intellij IDEA最新激活码,IDEA稳定专属激活码(持续更新) 2022和2023Pycharm激活码,Pycharm稳定专属激活码(持续更新) 2022和2023Webstorm激活码,Webstorm稳定专属激活码(…

    2023年10月3日
    00
  • Springboot+Vue电影院管理系统完整源码(含部署教程)

    最近有一些读者问我有没有完整的基于Springboot+Vue的项目源码,今天给大家整理了一下,并且录制了搭建的教程,无偿分享给大家。 源码下载链接:https://pan.baidu.com/s/11iAyVQeonFrJpuRPhFu1zw?pwd=abcd 提取码:abcd 源码文件部分截图

    2023年11月8日
    00
  • 你的求职:如何建立你的专业品牌和叙事

    在本文开始前,先给大家分享几个好用的IDEA激活码 这里提供几个最新的激活码,有需要的朋友可以试试,先到先用: 2022和2023Intellij IDEA最新激活码,IDEA稳定专属激活码(持续更新) 2022和2023Pycharm激活码,Pycharm稳定专属激活码(持续更新) 2022和2023Webstorm激活码,Webstorm稳定专属激活码(…

    2023年1月1日
    00
  • 密码保护:仿B站高性能后端项目(视频+源码)

    无法提供摘要。这是一篇受保护的文章。

    2022年11月7日
    00
  • IntelliJ IDEA 专业提示

    在本文开始前,先给大家分享几个好用的IDEA激活码 这里提供几个最新的激活码,有需要的朋友可以试试,先到先用: 2022和2023Intellij IDEA最新激活码,IDEA稳定专属激活码(持续更新) 2022和2023Pycharm激活码,Pycharm稳定专属激活码(持续更新) 2022和2023Webstorm激活码,Webstorm稳定专属激活码(…

    2023年2月8日
    00

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注