如何在java中同步除了使用synchronized关键字的方法?其他同步方法的方法
6
A
回答
6
你可以使用java.util.concurrent.locks
包,尤其是锁接口:
Lock l = ...;
l.lock();
try {
// access the resource protected by this lock
} finally {
l.unlock();
}
见here。
1
您可以使用的java.util.concurrent.locks包中提供的锁类
看到http://download.oracle.com/javase/1.5.0/docs/api/index.html?java/util/concurrent/locks/Lock.html
2
取决于你的具体需求。
请参阅Java concurrent package更高级别的同步抽象。请注意,他们仍然可以在下面使用...
1
这取决于您要做什么。你是出于好奇还是有特定的原因?
如果您尝试加速多线程方法,请尝试同步或锁定特定部分,或者完全避免线程问题;使共享数据final
,使静态的(非共享)数据ThreadLocal
,从java.util.concurrent.atomic
使用原子类型,使用并发集合(从java.util.concurrent
包)等
顺便说一句,在java.util.concurrent
的东西只在Java5的可用起,尽管作为一个项目来支持Java 1.4的软件包http://backport-jsr166.sourceforge.net/
我推荐Brian Goetz编写的“Java Concurrency in Practice”一书。
1
您也可以使用@Synchronized从Project Lombok生成一个专用字段,将用作您的方法的锁。
0
您可以在您的方法中使用同步块。如果您希望两个属于同一个类的方法分开同步,这会很有用。
private Object guard = new ...
public method(){
synchronized(guard){
\\method body
...
}
}
虽然在大多数情况下,这表明你应该真正打破你的课堂。
相关问题
- 1. 等待一个同步方法,其中调用异步方法
- 2. 其他方法
- 3. 异步方法调用同步方法
- 4. 同步方法
- 5. 同步方法
- 6. 同步方法
- 7. 包含其他对象的对象的同步方法
- 8. C#:其他方法的包装方法
- 9. 在其他线程上执行方法的同步
- 10. 调用同一类中其他方法的方法
- 11. Java的同步方法调用不同步方法
- 12. 同步ajax方法
- 13. Javascript同步方法
- 14. 同步异步方法
- 15. 异步和同步方法
- 16. 方法始终任何其他方法
- 17. 调用其他方法的TDD方法的正确方法
- 18. 同步方法不会阻止其他线程
- 19. 有没有其他方法可以检查并同步列表?
- 20. 从同步方法调用同步方法的同步成本是多少?
- 21. 静态同步方法与非静态同步方法
- 22. 从同步方法调用非同步方法
- 23. 同步方法执行时,非同步方法是否阻塞
- 24. 在另一个同步方法中引用同步方法
- 25. java中的方法同步
- 26. Java的方法同步
- 27. 的CopyOnWriteArrayList同步方法
- 28. 与spreed同步的方法
- 29. 线程同步的方法?
- 30. RXTX中的同步方法
你为什么要寻找另一种解决方案? – MeBigFatGuy 2011-03-30 07:03:09
iam正在寻找替代品(其学习的一部分) – developer 2011-03-30 07:07:14
当您将一个方法同步时,其锁定的对象不是方法。 – 2011-03-30 08:18:25