在Java中通过run方法为线程指明要完成的任务,
有两种技术来为线程提供run方法。
1. 继承Thread类并重写run方法。
2. 通过定义实现Runnable接口的类进而实现run方法。
1. 继承Thread类并重载run方法。
• Thread类:是专门用来创建线程和对线程进行操作的类。Thread中定义了许多方法对线程进行操作。
• Thread类在缺省情况下run方法什么都不做。可以通过继承Thread类并重写Thread类的run方法实现用户线程。
1. 继承Thread类并重写run方法。总体结构如下:
public class MyThread extends Thread {
public void run() {
… …
}
}
MyThread t = new MyThread();
t. start();
见例题 :TwoThreadsTest.java
2. 实现Runnable接口的类实现run方法。通过建立一个实现了Runnable接口的类,并以它作为线程的目标对象来创建一个线程。Runnable接口:定义了一个抽象方法run()。定义如下:
public interface java.lang.Runnable{
public abstract void run();
}
2. 实现Runnable接口的类实现run方法。
创建的总体框架如下:
• class MyRunner implements Runnable {
public void run() {
…
}
}
• MyRunner r = new MyRunner();
• Thread t = new Thread( ThreadGroup group,
Runnable target, String
name);
总结:
1. 两种方法均需执行线程的start方法为线程分配必须的系统资源、调度线程运行并执行线程的run方法。
2. 在具体应用中,采用哪种方法来构造线程体要视情况而定。通常,当一个线程已继承了另一个类时,就应该用第二种方法来构造,即实现Runnable接口。
3. 线程的消亡不能通过调用一个stop()命令。而是让run()方法自然结束。
public class MyThread implements Runnable
{ private boolean flag=true;
public void run()
{ while (flag)
{…}
}
public void stopRunning()
{ flag=false;}
}
public class ControlThread
{ private Runnable r=new MyThread();
private Thread t=new Thread(r);
public void startThread()
{ t.start(); }
publi void stopThread()
{ r.stopRunning();}
}
|
|