回答
你只需要在其上的常见显示器同步:
private final Object monitor = new Object();
public void methodA() {
synchronized (monitor) {
// Do something with exclusive access.
}
}
public void methodB() {
synchronized (monitor) {
// Do something with exclusive access.
}
}
注意,普通显示器可以是实例本身,在这种情况下,你可以简单地添加方法签名:
public synchronized void methodA() {
// Do something with exclusive access.
}
// Same for methodB. No need for `monitor`.
如果锁定整个方法可以自动同步,那么任何已知的缺点是什么? – StackOverflower
你的意思是为方法签名添加'synchronized'?我能想到的主要原因是随后添加到该类的任何其他'synchronized'方法也会阻止访问'methodA'和'methodB'。 –
两个线程互斥,你可以这样做:
private final Object mutex = new Object();
void f() {
synchronized (mutex) {
...
}
}
void g() {
synchronized (mutex) {
...
}
}
注意如果在同步块f
调用g
它不会被阻止。 (这将是无论如何死锁。)
你也可以将方法同步,而没有mutex
:
synchronized void f() { }
synchronized void g() { }
这确实对this
同步。
有更多的方法如何做到这一点: - 第一种方法是使用monitors - 或sempahores。它是独占访问,称为临界区(如:共享资源等,同步),“互斥方式”
其次是有用的,最简单的可能是使用notify()
和wait()
- (若无物上面,只是用synchronize
) - 对于this look there 更多关于显示器和使用你可以read there
- 1. 如何同步两种方法
- 2. 同步两种方法在Java中
- 3. 如何同步Android中的两种方法?
- 4. iPhone && Chipmunk-如何同步两种形状
- 5. 同一类中的两种方法同步
- 6. 同步两种方法并避免同时运行
- 7. 等待两种异步方法完成
- 8. 我需要同步两种方法和对象
- 9. 需要一种方法来同步两个操作
- 10. 同时执行两个同步方法
- 11. 这是一种同步方法吗?
- 12. 多种方法之间的java同步
- 13. 如何同时访问不同类的两种方法?
- 14. 如何同步异步方法?
- 15. 如何使这种方法异步?
- 16. 如何模拟这种异步方法?
- 17. 调用同步方法的同步方法,两个同一对象
- 18. 在不同的类(和不同的包)中同步两种方法
- 19. 有两种方法可以在两个pouchdb实例之间同步吗?
- 20. 这两种说法如何不同?
- 21. 惩戒同一类两种方法
- 22. 在两种不同的方法
- 23. 两种不同的as_json方法
- 24. 这两种方法是否相同?
- 25. TimePickerListener调用两种方法同时
- 26. Python的两种不同的方法
- 27. 同步方法
- 28. 同步方法
- 29. 同步方法
- 30. 同步脚本方法与另一种方法
你真的应该阅读一个并发基础教程。从这里开始:https://docs.oracle.com/javase/tutorial/essential/concurrency/sync.html –