1.派生线程类 Thread 的子类,并在子类中重写 run()方法。Thread 子类的实例对象是 一个线程对象,并且该线程有专门定制的线程 run()方法,启动线程后就执行子类中 重写的 run()方法。
2.实现 Runnable 接口并重新定义 run()方法。先定义一个实现 Runnable()接口的类,在 该类中定义 run()方法,然后创建新的线程类对象,并以该对象作为 Thread 类构造 方法的 数创建一个线程。
// 文 程序 10.6 ThreadStart.java public class ThreadStart
{
public static void main(String[ ] args) {
述 程启动
Runnable r = new RunnableThread();
Thread rt = new Thread(r);
rt.start();
SubThread st = new SubThread("SubThread");// 建 SubThread
// 建 RunnableThread // 建 程 rt
//启动 程
程序 10.6 中,类 RunnableThread 实现 Runnable 接 口,并重写 run 方法;SubThread 继承 Thread,同样也 实现了 run 方法。在 main 方法中,先通过 RunnableThread 类创建,并启动线程 rt;然后通过 SubThrea 类创建, 并启动 一个线程 st。
st.start();
//启动 程
} }
class RunnableThread implements Runnable{ // 载 run
public void run() {
System.out.println("RunnableThread 启动");
class SubThread extends Thread{ SubThread(){}
// SubThread 的 方法 SubThread(String Name)
{
super(Name);
}
// 载 run public void run() {
System.out.println("SubThread 启动");
//
// SubThread 方法
// 用 的 方法
//
} }
} }
###一个线程有 4 种 态,任何一个线程都处于这 4 种 态中的一种 态。
1.创建(new) 态:调用 new 方法产生一个线程对象后、调用 start 方法前所处的 态。线程对象虽然已经创建,但还没有调用 start 方法启动,因此无法执行。当线程 处于创建 态时,线程对象可以调用 start 方法进入启动 态,也可以调用 stop 方法
进入 态。
2.可运行(runnable) 态:当线程对象执行 start()方法后,线程就 到可运行 态。
进入此 态只是说 线程对象具有了可以运行的条件,但线程并不一定处于运行 态。因为在单处理器系统中运行多线程程序时,一个时间点只有一个线程运行,系 统通过调 机制实现 意义上的运行线程 处理器。因此一个线程是否在运行, 了线程必须处于 Runnable 态之 ,还取决于优先级和调 。
3.不可运行(non Runnable) 态:线程处于不可运行 态是由于线程被 起或者发 生 ,例如对一个线程调用 wait() 数后,它就可能进入 态;调用线程的 notify 或 notifyAll 方法后它才能 次回到可执行 态。
4.退出(done) 态:一个线程可以从任何一个 态中调用 stop 方法进入 出 态。 线程一 进入 出 态就不存在了,不能 回到其他的 态。 此之 ,如果线 程执行完 run 方法,也会自动进入 出 态。
“`
等待线程结束
1.public final boolean isAlive()
2.public final void join(long millis) throws InterruptedException
线程调度
1.public final void setPriority(int newPriority)
2.public final int getPriority()