我用 Java 语言规范 17.1 读到了这篇文章:
"Each object in Java is associated with a monitor, which a thread can lock or unlock."
为什么一定?这不是让java对象变得太重了吗?我不知道为什么像字符串这样的对象自然应该是监视器!
编辑:
我想了一下,是的,Java有一个关键字synchronized,因为EVERY对象可以有一个synchronized方法,所以有必要关联EVERY strong> 反对监视器。
但这似乎不是一个很好的解决方案,通常一个类需要多个互斥锁,除了那些非常简单的 pojo 类。
最佳答案
您的假设有一定道理,在经典书籍“Java Concurrency in Practice”(由大师 Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowbeer、David Holmes、Doug Lea 撰写)中,他们写道:
The fact that every object has a built-in lock is just a convenience so that you needn't explicitly create lock objects. In retrospect, this design decision was probably a bad one: not only can it be confusing, but it forces JVM implementors to make tradeoffs between object size and locking performance.
(第 2.4 章:用锁保护状态)
关于Java使用对象作为监视器,这个对象是不是太重了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3748447/