<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      多線程程序設計 (轉)

      [摘要]多線程程序設計 ◆ 多線程簡介   線程(thread)是操作系統分配 CPU 時間的基本實體。每一個應用程序至少有一個線程,也可以擁有多個線程。線程是程序中的代碼流。多個線程可以同時運行,并能共享...
      多線程程序設計


      ◆ 多線程簡介

        線程(thread)是操作系統分配 CPU 時間的基本實體。每一個應用程序至少有一個線程,也可以擁有多個線程。線程是程序中的代碼流。多個線程可以同時運行,并能共享資源。

        線程與進程不同,每個進程都需要操作系統為其分配獨立的地址空間。而同一進程中的各個線程是在同一塊地址空間中工作。

        在 Java 程序中,一些動態效果(如動畫的實現、動態的字幕等)常利用多線程技術來實現。

        在 Java 語言中可以非常方便地使用多線程。和 Visual C++ 相比,Java 的多線程既容易學習,又容易使用。

      ◆ 創建多線程的兩種辦法:

       。1)建立類 Thread 的子類

       。2)實現接口 Runnable

        第二個辦法比第一個使用得更為廣泛。本講座重點講解第二個辦法。

      ◆ 接口


        Java 語言取消了 C++ 的多重繼承(“多重繼承”常常使 C++ 程序員陷入混亂之中)。Java 增加了“接口”(interface)的概念,使 Java 在取消多重繼承后,并未使功能下降。

        “接口”(interface)是一種特殊的類。當你定義一個類時,可以“實現”(implements)一個(或多個)接口。語法如下:

        class 類名 extends 超類名 implements 接口名

      ◆ 例 1.5.1 一個最簡單的多線程小應用程序

      import java.applet.*;
      import java.awt.*;
      public class k04a extends Applet implements Runnable
      {
        private Thread m_k04a = null;
        public k04a()
        {
        }
        public void paint(Graphics g)
        {
          g.drawString("Running: " + Math.random(), 10, 20);
        }
        public void start()
        {
          m_k04a = new Thread(this);
          m_k04a.start();
        }
        public void stop()
        {
          m_k04a.stop();
          m_k04a = null;
        }
        public void run()
        {
          while (true)
          {
            try
            {
              repaint();
              Thread.sleep(200);
            }
            catch (InterruptedException e)
            {
              stop();
            }
          }
        }
      }


      ◆ 控制線程的生命周期

       。1)start()方法 啟動一個線程

       。2)run()方法 定義該線程的動作

        (3)sleep()方法 使線程睡眠一段時間,單位為毫秒

       。4)suspend()方法 使線程掛起

        (5)resume()方法 恢復掛起的線程

       。6)yield()方法 把線程移到隊列的尾部

       。7)stop()方法 結束線程生命周期并執行清理工作

       。8)destroy()方法 結束線程生命周期但不做清理工作

        其中最常用的是start(),run(),sleep(),stop()。

      ◆ try —— catch 語句

        用于對“異!钡奶幚。和“錯誤”相比,“異!笔潜容^輕微的。它是指程序在運行中發生的意外情況。(try - catch 語句在 C++ 中也有)。

        在執行 try 后面的語句時,如果發生異常,則執行 catch 后面的語句。

      ◆ 例 1.5.2 流動的標題

        該程序在運行時,三個標題在由下而上不斷變換。

      HTML 文件中的寫法:(三個圖片要事先做好)



      JAVA 源程序:

      import java.awt.*;
      import java.applet.Applet;

      public class testani extends Applet implements Runnable
      {
        Thread runner;
        Image imgs[];
        int high, y1, y2, y3;
        public void init()
        {
          high = size().height;
          y1 = high;
          y2 = high*2;
          y3 = high*3;
          imgs = new Image[10];
          for(int i=0;i<3;i++)
            imgs[i]=getImage(getCodeBase(),getParameter("image"+(i+1)));
        }
        public void start()
        {
          runner = new Thread(this);
          runner.start();
        }
        public void stop()
        {
          runner.stop();
          runner = null;
        }
        public void run()
        {
          while (runner != null)
          {
            try
            {
              Thread.sleep(100);
              repaint();
              y1--;
              if(y1==0)
              {
                Thread.sleep(3000);
                y2=high;
              }
              y2--;
              if(y2==0)
              {
                Thread.sleep(3000);
                y3=high;
              }
              y3--;
              if(y3==0)
              {
                Thread.sleep(3000);
                y1 = high;
              }
            }
            catch (InterruptedException e){}
          }
        }
        public void paint(Graphics g)
        {
          g.drawImage(imgs[0], 0, y1, this);
          g.drawImage(imgs[1], 0, y2, this);
          g.drawImage(imgs[2], 0, y3, this);
        }
        public void update(Graphics g)
        {
          paint(g);
        }
      }




      日韩精品一区二区三区高清