синхронизированные (объект) {} проблемы - PullRequest
0 голосов
/ 07 января 2010

Я столкнулся с проблемой производительности, когда 880 потоков делают synchronized() { method() } в одно и то же время, и это привело к серьезной проблеме производительности.

Возможно ли, что на synchronized() существует какой-то предел потоков, ожидающих? Где взять лимит?

Другой вопрос, что лучше всего поставить в synchronized( ? ). Потому что у меня есть разные классы, обращающиеся к этой переменной, поэтому я не могу поставить synchronized(this).

1 Ответ

2 голосов
/ 07 января 2010

Невозможно ограничить что-либо с помощью synchronized, для расширенных конструкций параллелизма вам нужно взглянуть на http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/package-summary.html.

Относительно того, что вы помещаете в синхронизированный (? ), что означает, что вы блокируете, зависит от поведения блокировки, которое вы хотите достичь. Если у вас есть глобальный (например, публичный статический объект LOCK = new Object (); ), который доступен из всех разных классов, и вы синхронизируете его с этим, тогда все классы будут блокироваться на этом.

Взгляните на Java-учебник по синхронизации .

...