Druzya.org
Возьмемся за руки, Друзья...
 
 
Наши Друзья

Александр Градский
Мемориальный сайт Дольфи. 
				  Светлой памяти детей,
				  погибших  1 июня 2001 года, 
				  а также всем жертвам теракта возле 
				 Тель-Авивского Дельфинариума посвящается...

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
оды suspend и resume позволяют, соответственно, временно приостанавливать 
и возобновлять работу задачи. Мы уже пользовались этими методами в приложении 
Rectangles для приостановки и возобновления работы задачи рисования 
прямоугольников.
   Задача приостанавливалась, когда курсор мыши оказывался над окном аплета:
public boolean mouseEnter(Event evt, int x, int y)
{
  if (m_Rectangles != null)
  {
    m_Rectangles.suspend();
  }
  return true;
}
   Работа задачи возобновлялась, когда курсор мыши покидал окно аплета:
public boolean mouseExit(Event evt, int x, int y)
{
  if (m_Rectangles != null)
  {
    m_Rectangles.resume();
  }
  return true;
}
   Ожидание извещения
   Если вам нужно организовать взаимодействие задач таким образом, чтобы одна 
задача управляла работой другой или других задач, вы можете воспользоваться 
методами wait, notify и notifyAll, определенными в классе Object.
   Метод wait может использоваться либо с параметром, либо без параметра. Этот 
метод переводит задачу в состояние ожидания, в котором она будет находиться до 
тех пор, пока для задачи не будет вызван извещающий метод notify, notifyAll, 
или пока не истечет период времени, указанный в параметре метода wait.
   Как пользоваться методами wait, notify и notifyAll?
   Метод, который будет переводиться в состояние ожидания, должен быть 
синхронизированным, то есть его следует описать как synchronized:
public synchronized void run()
{
  while (true)
  {
    . . .
    try
    {
      Thread.wait();
    }
    catch (InterruptedException e)
    {
    }
  }
}
   В этом примере внутри метода run определен цикл, вызывающий метод wait без 
параметров. Каждый раз при очередном проходе цикла метод run переводится в 
состояние ожидания до тех пор, пока другая задача не выполнит извещение с 
помощью метода notify.
   Ниже мы привели пример задачи, вызывающией метод notify:
public void run()
{
  while (true)
  {
    try
    {
      Thread.sleep(30);
    }
    catch (InterruptedException e)
 
 
<<-[Весь Текст]
Страница: из 275
 <<-