2010-01-06 85 views
0

我遇到了一個perfomance問題,其中880個線程在同一時間正在做synchronized() { method() },這導致了一個主要的性能問題。同步(對象){}問題

是否有可能在synchronized()上等待線程的限制?我在哪裏可以獲得限制?

另一個問題是什麼最好放入synchronized(?)。因爲我有不同的類訪問該變量,所以我不能把synchronized(this)

+2

你能否更好地解釋你的上下文,以及這樣的方法。您可能會使用錯誤的數據結構。 – notnoop 2010-01-06 21:32:39

+1

880個線程?你遇到性能問題並不奇怪。你能用更少的線程解決你的問題,而使用異步操作嗎? – 2010-01-06 21:34:25

+0

什麼是「主要性能問題」? 879死鎖線程? – 2010-01-06 22:07:49

回答

2

有沒有辦法限制同步的任何東西,對於高級併發構造,你需要看看http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html

關於你放在同步的內容(),這意味着你鎖定的內容取決於你想要實現的鎖定行爲。如果你有一個全局的對象(例如public static Object LOCK = new Object();),它可以從所有不同的類訪問,並且你可以同步,那麼所有的類都將鎖定在那個類上。

看看java tutorial on synchronization