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

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

Библиотека :: Компьютеры и Программирование :: А.В. Фролов, Г.В. Фролов - Microsoft Visual J++
<<-[Весь Текст]
Страница: из 275
 <<-
 
ает задачу.
    // Остановка выполняется только в том случае,
    // если задача была создана
    if (m_MultiTask != null)
    {
      // Остановка задачи
      m_MultiTask.stop();

      // Сброс ссылки на задачу
      m_MultiTask = null;
    }
  }

  // -------------------------------------------------------
  // run
  // Метод, который работает в рамках отдельной задачи
  // Он вызывает периодическое обновление содержимого
  // окна аплета
  // -------------------------------------------------------
  public void run()
  {
    // Выполняем обновление окна в бесконечном цикле
    while (true)
    {
      try
      {
        // Вызываем функцию обновления окна
        repaint();

        // Выполняем небольшую задержку
        Thread.sleep(50);
      }
      catch (InterruptedException e)
      {
        // Если при выполнении задержки произошло
        // исключение, останавливаем работу задачи
        stop();
      }
    }
  }
}
   В листинге 1.2 представлен исходный текст документа HTML, предназначенный 
для совместной работы с нашим аплетом.
Листинг 1.2. Файл MultiTask\MultiTask.html


MultiTask




The source. Описание исходных текстов Для того чтобы аплет стал мультизадачным, его класс, который наследуется от класса Applet, дополнительно реализует интерфейс Runnable, как это показано ниже: public class MultiTask extends Applet implements Runnable { . . . } Внутри класса определяется поле с именем m_MultiTask типа Thread, которое предназначено для хранения ссылки на объект класса Thread, то есть на задачу: Thread m_MultiTask = null; Поле инициализируется значением null. Реальная ссылка на задачу будет сюда записана только после создания задачи. Рассмотрим теперь методы класса. Конструктор MultiTask В нашем аплете конструктор не используется. Метод getAppletInfo Метод getAppletInfo возвращает информацию об аплете. Метод init Метод init вызывается один раз при инициализации аплета. Наше приложение его не использует. Метод destroy При завершении работы аплета управление передается методу destroy. Мы его не используем. Метод paint Метод paint рисует в окне аплета текстовую строку и случайное число, полученное при помощи статического метода random класса Math: public void paint(Graphics g) { g.drawString("Running: " + Math.random(), 10, 20); } Напомним, что в однозадачном приложении метод paint вызывается при первом создании окна аплета, а также в случае необходимости перерисовки этого окна. В нашем аплете будет создана отдельная задача, выполняющая периодическую перерисовку окна при помощи метода repaint. Поэтому случайное число в окне аплета будет постоянно меняться. Метод start Метод start вызывается, когда пользователь отображает документ HTML, содержащий аплет. Наша реализация этого метода проверяет, создана ли задача перерисовки окна, и, если эта задача не запущена, создает и запускает ее: public void start() { if(m_MultiTask == null) { m_MultiTask = new Thread(this); m_MultiTask.start(); } } Первоначально в поле m_MultiTask находитс
 
<<-[Весь Текст]
Страница: из 275
 <<-