Поточная обработка в Java: Как заблокировать объект?

В среде Linux вы захотите взглянуть на такой инструмент, как objdump , который покажет вам кучу информации о скомпилированном выводе.

Есть страницы, которые объясняют некоторые из его сложных выводов, таких как это . Но, возможно, одним из самых простых является objdump -T.

33
задан Ravindra babu 20 July 2016 в 17:06
поделиться

5 ответов

Для вызова, ожидают () на объекте, необходимо держать синхронизируемый, соединяют тот объект (хотя блокировка на самом деле выпущена, в то время как поток ожидает):

synchronized (serverAddr) {
  serverAddr.wait();
}

я должен признать, что , почему Вы желаете сделать, это экранирует меня в этом случае...

64
ответ дан Neil Coffey 27 November 2019 в 17:36
поделиться

Возможно, метод, который Вы ищете, Thread.sleep (долго) ? Этот метод будет ожидать (как на остановке выполнение потока) в течение требуемого времени в миллисекундах перед возобновлением.

object.wait (долго) (который является тем, что Вы используете) делает что-то совершенно различное. Это ожидает другого объекта от другого потока для уведомления его (т.е.: отправьте ему своего рода сообщение пробуждения), и будет ожидать самое большее конкретное количество миллисекунд. Учитывая код Вы отправили, я высоко сомневаюсь, что это - то, что Вы действительно хотите.

, Если Thread.sleep () не то, что Вы хотите, тогда необходимо использовать синхронизируемый блок, как упомянуто другими плакатами.

21
ответ дан Ravindra babu 27 November 2019 в 17:36
поделиться

Я всегда съеживаюсь, когда я вижу этот вид кода. Сделайте себе одолжение и взгляните на java.util.concurrent пакет.

11
ответ дан Apocalisp 27 November 2019 в 17:36
поделиться

Чтобы избежать что сообщение об ошибке, используйте синхронизируемое ключевое слово:

synchronized(serverAddr){
  serverAddr.wait(60000);
}
1
ответ дан krosenvold 27 November 2019 в 17:36
поделиться

Вышеупомянутое корректно. Можно использовать синхронизируемый блок кода. Или можно создать то, что они называют взаимным исключением. Взаимное исключение может на самом деле быть любым объектом. Много людей просто использует сам Объект в качестве взаимного исключения. Тогда можно соединить взаимное исключение. Любые потоки, желающие получить доступ, должны ожидать потока, содержащего взаимное исключение для выпуска его.

было также предложение Apocalisp. Я также рекомендовал бы посмотреть на java.util.concurrent пакет.

1
ответ дан uriDium 27 November 2019 в 17:36
поделиться