当前位置: 首页 > 面试题库 >

java语法:“已同步(this)”

卢雅惠
2023-03-14
问题内容

您能给我解释一下这段Java代码吗?我不明白这种语法。

synchronized (this) {
              try {
                  wait(endTime - System.currentTimeMillis());
              } catch (Exception e) {
              }
}

问题答案:

这意味着该代码块synchronized意味着不超过一个线程将能够访问该代码块中的代码。

this意味着您可以在当前实例上进行同步(获取当前实例的锁)。

这是我在Kathy Sierra的Java认证书中找到的。

因为同步确实会损害并发性,所以您不想同步任何超出保护数据所需的代码。
因此,如果方法的范围超出了需要,则可以将同步部分的范围减小到小于完整方法的范围,减少到一个块。

查看以下代码片段:

public synchronized void doStuff() {
    System.out.println("synchronized");
}

可以更改为:

public void doStuff() {
   //do some stuff for which you do not require synchronization
   synchronized(this) {
     System.out.println("synchronized");
     // perform stuff for which you require synchronization
   }
}

在第二个片段中,同步锁仅应用于该代码块,而不是整个方法。



 类似资料:
  • 请看下面给我带来麻烦的方法: 然后是run方法:

  • 主要内容:1 什么是Java静态同步方法,2 没有静态同步方法的问题,3 静态同步方法的例子1,4 静态同步方法的例子21 什么是Java静态同步方法 如果将任何静态方法设置为synchronized(同步),则锁定的是类而不是对象。 2 没有静态同步方法的问题 假设有两个共享类(例如:Table类)的对象,分别名为object1和object2。在使用同步方法和同步代码块的情况下,t1和t2或t3和t4之间不会存在干扰,因为t1和t2都引用了一个具有单个锁,但是t1和t3或t2和t4之间可能存

  • 问题内容: 这是我在此链接上找到的一段文字。 “避免锁定静态方法 最糟糕的解决方案是将“ synchronized”关键字放在静态方法上,这意味着它将锁定此类的所有实例。” 为什么同步静态方法会锁定该类的所有实例?它不应该锁定课程吗? 问题答案: 这是我的测试代码,表明您是正确的,并且本文有点过分谨慎: 印刷品: 因此与实例的方法无关… 当然,如果整个系统都使用这些方法,那么您可以期望它们对多线程

  • 当两个线程同时使用不同的实例调用静态同步方法时会发生什么?可能吗?对象锁用于非静态同步方法,但静态同步方法使用什么类型的锁?

  • 问题内容: 像许多其他网站一样,我的网站使用的是jQuery。打开开发人员工具时,我看到一条警告,指出XMLHTTPRequest是 不推荐使用,因为它对最终用户的体验有不利影响。 我继续阅读了部分文档,但这是相当技术性的。有人可以简单地解释从XMLHTTPRequest转换为WHATWG的后果吗?它说发生在2012年。 此外,该文档还说,正在从Web平台删除工作人员外部的Synchronous

  • 本文向大家介绍java synchronized同步静态方法和同步非静态方法的异同,包括了java synchronized同步静态方法和同步非静态方法的异同的使用技巧和注意事项,需要的朋友参考一下 java synchronized 详解 synchronized关键字有两种用法,一种是只用于方法的定义中,另外一种是synchronized块,我们不仅可以使用synchronized来同步一个对