Java中无主对象的同步块

Java中无主对象的同步块,java,multithreading,synchronized,Java,Multithreading,Synchronized,我想知道为什么Java需要synchronized块中的对象。i、 e: synchronized(object) { // stuff } 为什么我不能在不指定任何对象的情况下使用简单块?例如: synchronized { // stuff } 根据报告: 内部锁和同步 同步是围绕称为内在锁或监视器锁的内部实体构建的。(API规范通常将该实体简单地称为“监视器”)内在锁在同步的两个方面都起作用:强制对对象状态的独占访问,以及在对可见性至关重要的关系之前建立。 每个对象都有

我想知道为什么Java需要
synchronized
块中的对象。i、 e:

synchronized(object) {
    // stuff
}
为什么我不能在不指定任何对象的情况下使用简单块?例如:

synchronized {
    // stuff
}
根据报告:

内部锁和同步

同步是围绕称为内在锁或监视器锁的内部实体构建的。(API规范通常将该实体简单地称为“监视器”)内在锁在同步的两个方面都起作用:强制对对象状态的独占访问,以及在对可见性至关重要的关系之前建立。 每个对象都有一个与之相关联的内在锁。按照惯例,需要以独占方式一致访问对象字段的线程必须在访问对象字段之前获取对象的内在锁,然后在处理完这些字段后释放内在锁

同步语句

创建同步代码的另一种方法是使用同步语句。与同步方法不同,同步语句必须指定提供内在锁的对象

根据报告:

内部锁和同步

同步是围绕称为内在锁或监视器锁的内部实体构建的。(API规范通常将该实体简单地称为“监视器”)内在锁在同步的两个方面都起作用:强制对对象状态的独占访问,以及在对可见性至关重要的关系之前建立。 每个对象都有一个与之相关联的内在锁。按照惯例,需要以独占方式一致访问对象字段的线程必须在访问对象字段之前获取对象的内在锁,然后在处理完这些字段后释放内在锁

同步语句

创建同步代码的另一种方法是使用同步语句。与同步方法不同,同步语句必须指定提供内在锁的对象


因为可能有几十个线程在处理不相关的事情,而且如果它们都必须互相等待,这将大大降低速度,而且是不必要的。同步需要一个监视器,它是一个锁,可以保证以独占方式访问对象的状态。监视器可以显式(同步块)或隐式(同步方法,其中锁是
this
或类实例)指定。它将在什么上同步,所有块都有一个锁?这不是Python。您希望该语句的行为是什么?这意味着“与每一个
synchronized
块同步”?或者“与其他所有同步块同步,无论它们在什么位置同步”?您可以在同步方法中添加代码,这是您的方向吗?因为可能有几十个线程在处理不相关的事情,如果它们都必须相互等待,这将大大降低速度,同步需要一个监视器,它是一个锁,可以保证对对象状态的独占访问。监视器可以显式(同步块)或隐式(同步方法,其中锁是
this
或类实例)指定。它将在什么上同步,所有块都有一个锁?这不是Python。您希望该语句的行为是什么?这意味着“与每一个
synchronized
块同步”?或者“与其他同步块同步,无论它们在什么位置同步”?您可以在同步方法中添加代码,这是您的方向吗?