Java中多线程的创建——通过继承Thread类
在Java中,多线程编程是一种重要的技术,它允许程序同时执行多个任务。Java提供了两种主要的方式来创建线程:继承Thread
类和实现Runnable
接口。本文将重点介绍通过继承Thread
类来创建多线程的方法,并给出相应的示例代码和注释,以帮助初学者更好地理解和掌握。
继承Thread类创建线程
当我们通过继承Thread
类来创建线程时,需要重写Thread
类中的run()
方法。run()
方法包含了线程需要执行的代码。当我们调用线程的start()
方法时,Java虚拟机会自动调用run()
方法来执行线程的代码。
下面是一个简单的示例代码,演示了如何通过继承Thread
类来创建并启动一个线程:
// 自定义线程类,继承自Thread类
public class MyThread extends Thread {
// 重写Thread类的run()方法,定义线程执行的代码
@Override
public void run() {
// 线程执行的代码块
for (int i = 0; i < 5; i++) {
// 打印当前线程的名称和执行的次数
System.out.println("线程 " + Thread.currentThread().getName() + " 执行: " + i);
// 为了模拟线程执行的过程,可以添加一些延迟
try {
Thread.sleep(100); // 线程休眠100毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// 主程序入口
public static void main(String[] args) {
// 创建MyThread对象,即创建了一个线程
MyThread myThread = new MyThread();
// 设置线程的名称(可选)
myThread.setName("自定义线程");
// 启动线程,调用start()方法而不是run()方法
myThread.start();
// 主线程继续执行其他任务或等待线程结束
for (int i = 0; i < 5; i++) {
System.out.println("主线程执行: " + i);
try {
Thread.sleep(100); // 主线程也休眠100毫秒,以便观察线程交替执行的效果
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
代码注释说明:
- 我们定义了一个名为
MyThread
的类,它继承自Thread
类。 - 在
MyThread
类中,我们重写了run()
方法,定义了线程需要执行的代码。在这个例子中,我们使用了一个for循环来模拟线程的执行过程,并打印出当前线程的名称和执行的次数。 - 在
main()
方法中,我们创建了一个MyThread
对象,即创建了一个线程。然后,我们调用setName()
方法来设置线程的名称(这一步是可选的)。 - 要启动线程,我们需要调用
start()
方法而不是直接调用run()
方法。start()
方法会启动一个新的线程来执行run()
方法中的代码,而直接调用run()
方法则只是在当前线程中执行run()
方法中的代码,并不会创建新的线程。 - 在
main()
方法中,我们还添加了一个for循环来模拟主线程的执行过程。通过让主线程和自定义线程都休眠100毫秒,我们可以观察到线程交替执行的效果。
通过运行上述代码,你将看到主线程和自定义线程交替执行的结果,从而理解多线程编程的基本概念和工作原理。