如何在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