龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java线程入门――定义线程中的 run 方法

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
run 方法是运行线程时需要执行的代码。(你要用代码――也就是 run() 方法――来描述一个处理过程,而不是创建一个表示这个处理过程的对象。在如何理解线程方面,一直存在着争议

  run 方法是运行线程时需要执行的代码。(你要用代码――也就是 run() 方法――来描述一个处理过程,而不是创建一个表示这个处理过程的对象。在如何理解线程方面,一直存在着争议。这取决于,你是将线程看作是对象还是处理过程。假如你认为它是一个处理过程,那么你就摆脱了“万物皆对象”的 OO 教条。但与此同时,假如你只想让这个处理过程掌管程序的某一部分,那你就没理由让整个类都成为 Runnable 的。有鉴于此,用内部类的形式将线程代码隐藏起来,通常是个更明智的选择。来自TIJ3。)
  
  在 Java 语言中,我们可以通过下列两种方式来实现我们的run 方法:
  
  1、覆盖 java.lang.Thread 的 public void run() 方法。
  
  
  public class SimpleThread extends Thread {
  
   public SimpleThread(String str) {
  
   super(str);
  
   }
  
   public void run() {
  
   for (int i = 0; i < 10; i++) {
  
   System.out.println(i + " " + getName());
  
   try {
  
   sleep((long) (Math.random() * 1000));
  
   } catch (InterruptedException e) {
  
   }
  
   }
  
   System.out.println("DONE! " + getName());
  
   }
  
  }
  
  调用上面定义的线程:
  
  
  public class TwoThreadsDemo {
  
   public static void main(String[] args) {
  
   new SimpleThread("Jamaica").start();
  
   new SimpleThread("Fiji").start();
  
   }
  
  }
  
  
  
  2、实现 java.lang.Runnable 接口:
  
  
  import java.awt.Graphics;
  
  import java.util.*;
  
  import java.text.DateFormat;
  
  import java.applet.Applet;
  
  
  
  public class Clock extends Applet implements Runnable {
  
   private Thread clockThread = null;
  
   public void start() {
  
   if (clockThread == null) {
  
   clockThread = new Thread(this, "Clock");
  
   clockThread.start();
  
   }
  
   }
  
   public void run() {
  
   Thread myThread = Thread.currentThread();
  
   while (clockThread == myThread) {
  
   repaint();
  
   try {
  
   Thread.sleep(1000);
  
   } catch (InterruptedException e) {}
  
   }
  
   }
  
   public void paint(Graphics g) {
  
   Calendar cal = Calendar.getInstance();
  
   Date date = cal.getTime();
  
   DateFormat dateFormatter = DateFormat.getTimeInstance();
  
   g.drawString(dateFormatter.format(date), 5, 10);
  
   }
  
   public void stop() {
  
   clockThread = null;
  
   }
  
  }
  
精彩图集

赞助商链接