创建 Thread 对象后,您可以通过调用 start() 方法来启动它,该方法执行对 run( ) 的调用方法。以下是 start() 方法的简单语法
void start();
示例 1
在这个示例中,我们通过实现 Runnable 接口创建一个 RunnableDemo 类。 RunnableDemo 类具有 run() 方法实现。在主类 TestThread 中,我们创建了 RunnableDemo 对象,并使用这些对象创建了两个 Thread 对象。当每个线程对象调用 Thread.start() 方法时,线程开始处理并执行程序。
package com.yxjc123;
class RunnableDemo implements Runnable {
private String threadName;
RunnableDemo( String name) {
threadName = name;
System.out.println("Thread: " + threadName + ", " + "State: New");
}
public void run() {
System.out.println("Thread: " + threadName + ", " + "State: Running");
for(int i = 4; i > 0; i--) {
System.out.println("Thread: " + threadName + ", " + i);
}
System.out.println("Thread: " + threadName + ", " + "State: Dead");
}
}
public class TestThread {
public static void main(String args[]) {
RunnableDemo runnableDemo1 = new RunnableDemo( "Thread-1");
RunnableDemo runnableDemo2 = new RunnableDemo( "Thread-2");
Thread thread1 = new Thread(runnableDemo1);
Thread thread2 = new Thread(runnableDemo2);
thread1.start();
thread2.start();
}
}
输出
Thread: Thread-1, State: New
Thread: Thread-2, State: New
Thread: Thread-1, State: Running
Thread: Thread-1, 4
Thread: Thread-1, 3
Thread: Thread-1, 2
Thread: Thread-1, 1
Thread: Thread-1, State: Dead
Thread: Thread-2, State: Running
Thread: Thread-2, 4
Thread: Thread-2, 3
Thread: Thread-2, 2
Thread: Thread-2, 1
Thread: Thread-2, State: Dead
示例 2
这里是重写前面的程序以扩展 Thread - 在本示例中,我们创建了一个扩展 Thread 类的 ThreadDemo 类。我们在 constructor() 方法中调用 super(name) 为线程分配名称,并调用 super.start() 启动线程处理。
package com.yxjc123;
class ThreadDemo extends Thread {
ThreadDemo( String name) {
super(name);
System.out.println("Thread: " + name + ", " + "State: New");
}
public void run() {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
for(int i = 4; i > 0; i--) {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i);
}
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
}
public void start () {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Start");
super.start();
}
}
public class TestThread {
public static void main(String args[]) {
ThreadDemo thread1 = new ThreadDemo( "Thread-1");
ThreadDemo thread2 = new ThreadDemo( "Thread-2");
thread1.start();
thread2.start();
}
}
输出
Thread: Thread-1, State: New
Thread: Thread-2, State: New
Thread: Thread-1, State: Running
Thread: Thread-1, 4
Thread: Thread-1, 3
Thread: Thread-1, 2
Thread: Thread-1, 1
Thread: Thread-1, State: Dead
Thread: Thread-2, State: Running
Thread: Thread-2, 4
Thread: Thread-2, 3
Thread: Thread-2, 2
Thread: Thread-2, 1
Thread: Thread-2, State: Dead
示例 3
在此示例中,我们创建了几个扩展 Thread 类的 ThreadDemo 类对象。我们在 constructor() 方法中调用 super(name) 来为线程分配名称,并调用 super.start() 来启动线程处理。使用 sleep() 方法,我们引入了处理延迟。
package com.yxjc123;
class ThreadDemo extends Thread {
ThreadDemo( String name) {
super(name);
System.out.println("Thread: " + name + ", " + "State: New");
}
public void run() {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Running");
for(int i = 4; i > 0; i--) {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + i);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Dead");
}
public void start () {
System.out.println("Thread: " + Thread.currentThread().getName() + ", " + "State: Start");
super.start();
}
}
public class TestThread {
public static void main(String args[]) {
ThreadDemo thread1 = new ThreadDemo( "Thread-1");
ThreadDemo thread2 = new ThreadDemo( "Thread-2");
thread1.start();
thread2.start();
}
}
输出
Thread: Thread-1, State: New
Thread: Thread-2, State: New
Thread: main, State: Start
Thread: main, State: Start
Thread: Thread-1, State: Running
Thread: Thread-1, 4
Thread: Thread-2, State: Running
Thread: Thread-2, 4
Thread: Thread-2, 3
Thread: Thread-1, 3
Thread: Thread-1, 2
Thread: Thread-2, 2
Thread: Thread-2, 1
Thread: Thread-1, 1
Thread: Thread-1, State: Dead
Thread: Thread-2, State: Dead