![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
EgorTheBlade |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 5.12.2009 Репутация: нет Всего: -1 |
Добрый День.
Есть класс
Метод do1() выполняет поток Thread 1. Метод do2() выполняет поток Thread 2. Thread 2 не сможет выполнить метод do2 () пока работает do1(). Почему это происходит? Причина - это методы одного класса? Спасибо. |
|||
|
||||
ecologist |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 452 Регистрация: 28.2.2007 Репутация: 2 Всего: 9 |
Приводи код исследования - заставлять догадываться не очень хорошая идея.
|
|||
|
||||
ARMALITE |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 22.12.2009 Где: Санкт-Петербург, Россия Репутация: нет Всего: нет |
Почему Thread 2 не может выполнить do2? Он, судя по вашим словам, его уже выполняет. Вот do1 он выполнить не сможет, да, потому что synchronized-методы выполняет всегда одновременно только один поток.
|
|||
|
||||
tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 31 Всего: 132 |
Причина в том что в том случае когда метод объявлен synchronized, монитором выступает экземпляр класса. То есть получается что первый поток выполняя do1() захватывает объект-монитор (экземпляр класса A) и до тех пор пока он не будет освобожден второй поток выполнить do2() не сможет. Если создать второй экземпляр A, то do1() и do2() смогут выполняться параллельно. Если do1() и do2() определить как static, то монитором будет уже объект класса и методы не смогут быть выполнены параллельно независимо от количества экземпляров класса A. Это сообщение отредактировал(а) tux - 21.8.2011, 16:36 |
|||
|
||||
EgorTheBlade |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 141 Регистрация: 5.12.2009 Репутация: нет Всего: -1 |
Сможет ли начатся do2(), если do1() еще незавершен? Добавлено через 2 минуты и 42 секунды tux, спасибо. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |