当我们需要在Java程序中创建一个新的线程时,我们有两种主要的方式。
方法一:通过继承Thread
类创建线程
- 创建一个继承自Thread类的新类。
public class MyThread extends Thread {
@Override
public void run() {
// 新线程执行的代码
}
}
- 在该类中重写
run()
方法,将需要新线程执行的代码放在其中。 - 在主线程中创建该子线程并启动它。
MyThread myThread = new MyThread(); // 创建MyThread的实例
// 启动新线程
myThread.start();
// 等待新线程完成
try {
myThread.join();
} catch (InterruptedException e) {
// 异常处理
}
方法二:通过实现Runnable
接口创建线程
- 实现
Runnable
接口。
public class MyRunnable implements Runnable {
// 实现Runnable接口中的run()方法
@Override
public void run() {
// 新线程执行的代码
}
}
- 在该类中实现
Runnable
接口中的run()
方法,将需要新线程执行的代码放在其中。 - 创建一个
Thread
对象,并将实现Runnable
接口的类的实例传递给该对象的构造函数。
MyRunnable myRunnable = new MyRunnable(); // 创建实现Runnable接口的类的实例
// 通过实现Runnable接口创建新线程
Thread newThread = new Thread(myRunnable);
// 启动新线程
newThread.start();
// 等待新线程完成
try {
newThread.join();
} catch (InterruptedException e) {
// 异常处理
}
示例一:基于继承Thread
类创建线程
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Thread " + Thread.currentThread().getId() + ": " + i);
}
}
}
public class Main {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();
}
}
该程序创建了两个线程,每个线程都输出其线程ID和计数器,最后输出的结果可能如下所示。
Thread 11: 0
Thread 12: 0
Thread 11: 1
Thread 12: 1
Thread 11: 2
Thread 12: 2
Thread 11: 3
Thread 12: 3
Thread 11: 4
Thread 12: 4
Thread 11: 5
Thread 12: 5
Thread 11: 6
Thread 12: 6
Thread 11: 7
Thread 12: 7
Thread 11: 8
Thread 12: 8
Thread 11: 9
Thread 12: 9
示例二:基于实现Runnable
接口创建线程
public class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("Thread " + Thread.currentThread().getId() + ": " + i);
}
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread1 = new Thread(myRunnable);
Thread thread2 = new Thread(myRunnable);
thread1.start();
thread2.start();
}
}
该程序创建了两个线程,每个线程都输出其线程ID和计数器,最后输出的结果可能如下所示。
Thread 11: 0
Thread 12: 0
Thread 11: 1
Thread 12: 1
Thread 11: 2
Thread 12: 2
Thread 11: 3
Thread 12: 3
Thread 11: 4
Thread 12: 4
Thread 11: 5
Thread 12: 5
Thread 11: 6
Thread 12: 6
Thread 11: 7
Thread 12: 7
Thread 11: 8
Thread 12: 8
Thread 11: 9
Thread 12: 9
以上两种方式创建的子线程字段都会运行其run()
方法中的代码,我们可以通过调用thread.join()
方法使主线程等待子线程完成后再执行后续的代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java创建子线程的两种方法 - Python技术站