Wat () и notify () непосредственно связаны с классом объекта, то есть все объекты имеют этот метод. Поначалу это очень невероятно, но на самом деле это очень естественно, потому что эта пара методов должна выпустить занятый замком при блокировании, а замок доступен в любом объекте. причина блокировки потока. Метод Notify () для вызова любого объекта вызывает случайно выбранную блокировку блокировки в потоке, который препятствует методу wait () объекта (но его можно выполнить до тех пор, пока он не будет заблокирован).
Во -вторых, wait () и notify () можно вызвать в любой позиции, но эта пара должна быть вызвана в синхронизированном методе или блоке. Точно так же блокировка на объекте этой пары методов должна принадлежать текущему потоку, чтобы заблокировалась. Следовательно, вызов метода должен быть размещен в таком синхронизированном методе или блоке. Если это условие не будет выполнено, хотя программа все еще может быть составлена, нелегаламонорсстатэкспений появится во время выполнения.
Приведенные выше функции методов wait () и notify () определяют, что они часто используют его с помощью синхронизированного метода или блока. Метод или блок обеспечивает метод или блок, обеспечивающий метод или блок, аналогичный функциям операционных систем, их выполнение не будет нарушено многочисленными механизмами, и эта пара эквивалентна блоке и примитивам для пробуждения (эта пара Методы все объявляют синхронизированные). Их комбинация позволяет нам реализовать серию изысканных алгоритмов межкоммуникации (таких как алгоритмы количества сигналов) в операционной системе, и используют ее для решения различных сложных задач между связью.
О методах wait () и notify () наконец -то объясняют два момента:
Сначала: вызовите метод notify (), который вызывает случайным образом выбранное блокируемое поток из метода wait (), который вызывает объект.
Второе: в дополнение к notify (), есть также метод notifyall (), который также может играть аналогичную роль. к объекту. Конечно, только поток, который получает блокировку, может войти в исполняемое состояние.
Связанный ожидание и уведомление Используйте демонстрацию:
/** * <pre> * sub -thread Cycle 10 раз, затем цикл основного потока в 100 раз, а затем вернитесь в цикл подзадна 10 раз, * затем вернитесь к основному циклу потока 100 раз, так что в 50 раз * </ presle> * @author ketqi */ public class waitnotifydemo {public static void main (string [] args) {final Business Business = new Business (); {for (int i = 1; i <= 50; i ++) {business.sub (i);}}}). {business.min (i); e.printstacktrace ();}} for (int j = 1; j <= 10; j ++) {System.out.println ("sub -thread -последовательность" + j + ", петля" + i); } Ismainthread = false; Int j = 1; }}Выше всего содержимое этой статьи.