gpt4 book ai didi

Java使用对象作为监视器,这个对象是不是太重了?

转载 作者:行者123 更新时间:2023-12-03 01:57:26 24 4
gpt4 key购买 nike

我用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com