java多线程中“私有最终对象”锁的用途是什么?
据我所知,我认为要使一个类成为线程安全的,我们应该使用内部锁,我们将所有的方法标记为已同步,并使用"this“将它们锁定在对象的监视器上。或者,我们可以将类的"this“上标记为已同步的方法替换为方法内部的私有最终对象锁,以锁定通用对象锁,使其线程安全?/ Locks on the object's monit
在Java中是否等效于以下类?如果没有,为什么?类Abc {私有int c= 0;公共同步空添加( int a) {c += a;}公共同步空减(Int a) {c -= a;}类Def {私有int c= 0;私有最终对象锁=新对象();公共空添加(Int a) {同步(锁){c += a;}公共空减(Int a) {同步(锁){c -= a;}},在Def中,使用this作为同步参数而不是lock会有什么问题?在Java<
在实践书中的Java并发性中,我在第4章中遇到了一段代码。synchronized(myLock) // Access or modify the state of widget }这本书说使用私有锁对象是有好处的使锁对象私有封装锁,使客户端代码无法获得锁,而可公开访问的锁允许客户端代码参与其同步策略--正确或错误。我的
我希望在Java中创建多个异步线程,并在它们之间传递消息。我将数据发送到目标节点中的数据结构中,并进行轮询。但是必须锁定对该数据结构的访问。我使用这一行创建锁:
public int mailboxSize() synchronized (lock) }我担心的是,如果所有节点都使用这个类/cookie切割器作为代码,那么所有锁
基本上,在Java中锁定私有成员的最佳实践是什么?假设每个私有字段只能单独操作,永远不能在一起操作(如下面的测试类示例),那么您应该直接锁定每个私有字段(示例1),还是应该在希望锁定的每个私有字段中使用一般的锁对象(示例2)?示例1:直接锁定私有字段 private final List<Object> xList = new ArrayList<Object>();
private final