如何在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. C#:其他方法的包装方法
- 6. 调用同一类中其他方法的方法
- 7. Java的同步方法调用不同步方法
- 8. Javascript同步方法
- 9. 异步和同步方法
- 10. 同步异步方法
- 11. 方法始终任何其他方法
- 12. 调用其他方法的TDD方法的正确方法
- 13. 在另一个同步方法中引用同步方法
- 14. 与spreed同步的方法
- 15. 线程同步的方法?
- 16. 同步的方法和锁
- 17. C#中的同步方法
- 18. java中的方法同步
- 19. 的CopyOnWriteArrayList同步方法
- 20. 这是异步调用同步方法的正确方法吗?
- 21. 异步方法中的异步方法
- 22. 在同步方法内同步(this)块
- 23. 同步方法VS同步块
- 24. 调用同步方法的同步方法,两个同一对象
- 25. 如何在其他方法
- 26. OOJS呼叫其他方法
- 27. 同步异步调用的方法?
- 28. 异步方法的同步版本
- 29. Java - 同步方法/块
- 30. Java - 同步静态方法
你为什么要寻找另一种解决方案? – MeBigFatGuy 2011-03-30 07:03:09
iam正在寻找替代品(其学习的一部分) – developer 2011-03-30 07:07:14
当您将一个方法同步时,其锁定的对象不是方法。 – 2011-03-30 08:18:25