Философия Java


Создание множества процессов - часть 3


После того как размер массива установлен, создается новый объект Ticker, как часть конструктора, кнопка и текстовое поле добавляются к апплету.

Нажатие на кнопку start обозначает цикл по всему массиву Ticker и вызывает start() для каждого.  Запомните, start() выполняет необходимую инициализацию процесса и, затем, вызывает run( ) для каждого процесса.

Слушатель ToggleL просто инвертирует флаг в Ticker и, когда связанный с ним процесс в следующий раз проверит значение, он среагирует соответственно.

Одно достоинство данного примера в том, что он позволяет вам просто создавать большое количество независимых подзадач и отслеживать их поведение. В этом случае вы увидите, что по мере того как количество подзадач становится все больше ваш компьютер, вероятнее всего, будет показывать различные значения счетчика, что связано со способом обработки процессов.

Можно также поэкспериментировать и убедиться в том, насколько sleep(100)  важен внутри Tricker.run(). Если убрать sleep() все будет прекрасно работать пока вы не нажмете кнопку переключатель, что установит значение runFlag в false после чего run() просто заморозится в бесконечном цикле, который будет трудно прервать во время мульти процессорности, так что время отклика программы и скорость выполнения заметно ухудшаться.




Начало  Назад  Вперед