java语言多线程程序总结

     Java语言中线程是一个很重要的部分,线程是操作系统分配 CPU 时间的基本实体。每一个应用程序至少有一个线程,也可以拥有多个线程。线程是程序中的代码流。多个线程可以同时运行,并能共享资源。

    

 (一) 创建多线程有两种方法:

 

   1,建立类 Thread 的子类

   2,实现接口 Runnable

 

     Java 语言取消了多重继承,增加了“接口”(interface)的概念。“接口”(interface)是一种特殊的类。当你定义一个类时,可以“实现”(implements)一个(或多个)接口。

 

小实例代码(引用):

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();     

         }  

   }  

 }

}

 

 (二)控制线程的生命周期方法总结(共有8个): 

 

start() 启动一个线程  

 

run() 定义该线程的动作  

sleep() 使线程睡眠一段时间,毫秒

suspend() 使线程挂起  

 

resume() 恢复挂起的线程  

yield() 把线程移到队列的尾部  

stop() 结束线程生命周期并执行清理工作

destroy() 结束线程生命周期但不做清理工作

 

实例源程序(引用):

 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);  

 }

}

 

 

 

注:线程与进程不同,每个进程都需要操作系统为其分配独立的地址空间。而同一进程中的各个线程是在同一块地址空间中工作。 

 

 

 

----end----

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值