| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Оглавление

Многопоточность
Процессы, потоки и приоритеты
Многопоточность в Java
Многопоточность и анимация
Синхронизация потоков
Потоки-демоны
Аплет Rectangles
Исходные тексты
Описание текстов

    Исходные тексты аплета Rectangles

    Исходные тексты аплета Rectangles приведены в листинге 1.

    Листинг 1. Файл Rectangles,java

    import java.applet.*;
    import java.awt.*;
    public class Rectangles extends Applet
    {
      DrawRectangles m_DrawRectThread = null;
      DrawEllipse m_DrawEllipseThread = null;
      NotifyTask m_NotifyTaskThread = null
      public String getAppletInfo()
      {
        return "Name: Rectangles";
      }
      public void paint(Graphics g)
      {
        Dimension dimAppWndDimension = getSize();
        g.setColor(Color.yellow);
        g.fillRect(0, 0, 
          dimAppWndDimension.width  - 1, 
          dimAppWndDimension.height - 1);
        g.setColor(Color.black);
        g.drawRect(0, 0, 
          dimAppWndDimension.width  - 1, 
          dimAppWndDimension.height - 1);
      }
      public void start()
      {
        if (m_DrawRectThread == null)
        {
          m_DrawRectThread = 
            new DrawRectangles(this);
          m_DrawRectThread.start();
        }
        if (m_DrawEllipseThread == null)
        {
          m_DrawEllipseThread = 
            new DrawEllipse(this);
          m_DrawEllipseThread.start();
        }
        if (m_NotifyTaskThread == null)
        {
          m_NotifyTaskThread = 
            new NotifyTask(m_DrawEllipseThread);
          m_NotifyTaskThread.start();
        }
      }
    
      public void stop()
      {
        if (m_DrawRectThread != null)
        {
          m_DrawRectThread.stop();
          m_DrawRectThread = null;
        }
        if (m_DrawEllipseThread == null)
        {
          m_DrawEllipseThread.stop();
          m_DrawEllipseThread = null;
        }    
        if (m_NotifyTaskThread != null)
        {
          m_NotifyTaskThread.stop();
          m_NotifyTaskThread = null;
        }
      }
    }
    class DrawRectangles extends Thread
    {
      Graphics g;
      Dimension dimAppWndDimension;
      public DrawRectangles(Applet Appl)
      {
        g = Appl.getGraphics();
        dimAppWndDimension = Appl.getSize();
      }
      public void run()
      {
        while (true)
        {
          int x, y, width, height;
          int rColor, gColor, bColor;      
          x =      (int)(dimAppWndDimension.width 
                * Math.random());
          y =      (int)(dimAppWndDimension.height
                * Math.random());
          width  = (int)(dimAppWndDimension.width
                * Math.random()) / 2;
          height = (int)(dimAppWndDimension.height
                * Math.random()) / 2;      
          rColor = (int)(255 * Math.random());
          gColor = (int)(255 * Math.random());
          bColor = (int)(255 * Math.random());
          g.setColor(new Color(rColor, 
            gColor, bColor));
          g.fillRect(x, y, width, height);
          try
          {
    	Thread.sleep(50);
          }
          catch (InterruptedException e)
          {
    	stop();
          }
        }
      }
    }
    class DrawEllipse extends Thread
    {
      Graphics g;
      Dimension dimAppWndDimension;
      public DrawEllipse(Applet Appl)
      {
        g = Appl.getGraphics();
        dimAppWndDimension = Appl.getSize();
      }
      public synchronized void run()
      {
        while (true)
        {
          int x, y, width, height;
          int rColor, gColor, bColor;
          x =      (int)(dimAppWndDimension.width
              * Math.random());
          y =      (int)(dimAppWndDimension.height
              * Math.random());
          width  = (int)(dimAppWndDimension.width
              * Math.random()) / 2;
          height = (int)(dimAppWndDimension.height
              * Math.random()) / 2;
          rColor = (int)(255 * Math.random());
          gColor = (int)(255 * Math.random());
          bColor = (int)(255 * Math.random());
          g.setColor(new Color(rColor,
             gColor, bColor));
          g.fillOval(x, y, width, height);
          try
          {
    	this.wait();
          }
          catch (InterruptedException e)
          {
          }
        }
      }
    }
    class NotifyTask extends Thread
    {
      Thread STask;
      public NotifyTask(Thread SynchroTask)
      {
        STask = SynchroTask;
      }
      public void run()
      {
        while (true)
        {
          try
          {
    	Thread.sleep(30);
          }
          catch (InterruptedException e)
          {
          }
          synchronized(STask)
          {
            STask.notify();
          }
        }
      }
    }


Java | Продукты и решения | Технологии | Сервис и обучение
О компании | Партнеры | Новости | Поиск
Sun Microsystems Inc. Corporate Information Our partners News and Events Search on site Java Computing Products and Solutions Technologies and Researches Education and Service Content
Используются технологии uCoz

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz