允许的方法锁定在Java中其父对象
-
22-07-2019 - |
题
是否有在Java中的方式来获得的方法来锁定(互斥),其是在对象?
我知道这听起来混乱,但基本上我wan't一个equivelent到这个片段的C#但在Java。
lock(this)
{
// Some code here...
}
我一直在负责重新实现.NET编写成Java的API,我已经被告知要保持Java版本类似于.NET版本以不可思议的。这不是由一个事实,即.NET版本看上去就像是从C ++版本,我没有获得转录帮助。
反正上面的行出现在C#版本,我需要的东西,做同样在Java中。
解决方案
的是,当量是:
synchronized (this)
{
}
(不,你不应该一般做它C#或Java的身高锁定在私有引用它没有别的访问您可能知道的已经,当然 - 。但我不想离开一个答案没有警告:)
其他提示
我建议布赖恩戈茨的 “ Java并发在实践。”这是一个很好的书。
它可以保持同步块尽可能小一件好事。使用上的方法中的同步调节剂为粗粒和有时是必要的,但除此之外,可以使用另一个目的是做到这一点,保持块小。
像这样:
public class PrivateLock {
private final Object myLock = new Object();
@GuardedBy("myLock") Widget widget;
void someMethod() {
synchronized (myLock) {
// Access or modify the state of widget
}
}
}
您还应该考虑的API(JDK 5.0+),用于附加的并发管理的java.util.concurrent包作为信号,交换机等对象,例如
HTTP:/ /java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html
不隶属于 StackOverflow