在Java中没有主对象的同步块 [关闭]。

问题描述 投票:0回答:1

我很奇怪,为什么Java要求一个对象在一个 synchronized 块,即

synchronized(object) {
    // stuff
}

为什么我不能使用一个简单的块 而不指定任何对象?比如说

synchronized {
    // stuff
}
java multithreading synchronized
1个回答
2
投票

根据 文件:

本质锁和同步化。

同步化是围绕着一个被称为 "同步 "的内部实体建立的。固有锁监视器锁. (API规范经常把这个实体简单地称为 "监视器"。)内在锁在同步的两个方面都起着作用:强制对对象的状态进行排他性访问,并建立对可见性至关重要的发生前关系。 每个对象都有一个与之相关的固有锁。 按照惯例,一个需要对对象的字段进行独占性和一致性访问的线程,必须在访问这些字段之前获得对象的固有锁,然后在处理完这些字段后释放固有锁。

同步语句

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

© www.soinside.com 2019 - 2024. All rights reserved.