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

Java入门笔记6_线程

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
1. 多线程 1.1 创建线程类 在Java中可以简单的从Thread类中继续创建自己的线程类: public class MyFirstThread extends Thread { public void run() { . . .} } 说明: (1) Thread类位是java.lang包中,所以可以

  1. 多线程
  1.1 创建线程类
  在Java中可以简单的从Thread类中继续创建自己的线程类:
  
  public class MyFirstThread extends Thread {
  
   public void run() { . . .}
  
  }
  
  说明:
  
  (1) Thread类位是java.lang包中,所以可以不用显示import;
  
  (2) 从Thread类中继续下来的类最好重载run()方法,以运行需要的代码;
  
  可以按以下方法实例化并运行线程:
  
  MyFirstThread aMFT = new MyFirstThread();
  
  aMFT.start();
  
  说明:
  
  (3) 实例化线程类后,系统会初始化一些参数,主要是为线程创建名称,把新的线程加入指定的线程组,初始化线程运行需要的内存空间,指定新线程的优先级别,指定它的守候线程;
  
  (4) start方法是Thread类中的方法,它会调用run方法,在新的线程中运行指定的代码;
  
  (5) 除了start方法外,从Thread继续下来的类还具有其它一些主要的方法:stop,suspend,resume等;
  
  以下是一个完整的Thread派生类:
  
  1: public class ComplexThread extends Thread {
  
   2: private int delay;
  
   3:
  
   4: ComplexThread(String name, float seconds) {
  
   5: super(name);
  
   6: delay = (int) seconds * 1000; // delays are in milliseconds
  
   7: start(); // start up ourself!
  
   8: }
  
   9:
  
  10: public void run() {
  
  11: while (true) {
  
  12: System.out.println(Thread.currentThread().getName());
  
  13: try {
  
  14: Thread.sleep(delay);
  
  15: } catch (InterruptedException e) {
  
  16: return;
  
  17: }
  
  18: }
  
  19: }
  
  20:
  
  21: public static void main(String argv[]) {
  
  22: new ComplexThread("one potato", 1.1F);
  
  23: new ComplexThread("two potato", 1.3F);
  
  24: new ComplexThread("three potato", 0.5F);
  
  25: new ComplexThread("four", 0.7F);
  
  26: }
  
  27: }
  
  1.2 Runable接口
  创建多线程运行指定代码的另一种方法是,在创建类时implement Runable这个接口:
  
  public class MySecondThread extends ImportantClass implements Runnable {
  
   public void run() {. . .}
  
  }
  
  说明:
  
  (1) 该类implement Runable接口,就表明有意图运行在单独的线程中,Thread也是implement Runable接口的;
  
  (2) Implement Runalbe接口至少需要实现run方法;
  
  以下是创建新线程运行该类的实例:
  
  MySecondThread aMST = new MySecondThread();
  
  Thread aThread = new Thread(aMST);
  
  aThread.start();
  
  说明:
  
  (3) Thread类有多个构造函数Thread()、Thread(Runable target)等,本例中用的就是第二个构造函数,它有一个Runable类型的函数,所以要在多线程中运行的实例的类必须是implement Runable的;
  
  (4) AThead.start()方法调用Thread实例的中的target.run方法,本例中就是MySecondThread实例中的run方法;
  
  (5) Thread构造函数还可以指定线程名,运行所需的stack,线程所属的组等;
  
精彩图集

赞助商链接