Java实现多线程有两种方式:继承Thread类和实现Runnable接口。这两种方式实现多线程的基本原理是一样的,但是使用方法、优缺点不同。
继承Thread类
继承Thread类实现多线程的方式比较简单,只需要继承Thread类,重写run()方法即可。这种方式更适合于想要简单实现多线程的情况。
实现步骤
- 定义一个类,继承Thread类
public class MyThread extends Thread{
- 重写run()方法
@Override
public void run() {
// 每条线程需要执行的代码
}
- 创建线程对象
MyThread thread = new MyThread();
- 启动线程
thread.start();
示例
下面是一个简单的继承Thread类实现多线程的示例,用两个线程输出1-10之间的偶数和奇数。
public class MyThread extends Thread {
private int start;
public MyThread(int start) {
this.start = start;
}
@Override
public void run() {
for (int i = start; i <= 10; i += 2) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
public static void main(String[] args) {
MyThread thread1 = new MyThread(1);
MyThread thread2 = new MyThread(2);
thread1.start();
thread2.start();
}
}
实现Runnable接口
实现Runnable接口的方式相比继承Thread类的方式更加灵活,它可以避免单继承的限制,使得程序的扩展性更加强大。实现Runnable接口的方式还可以通过将实现Runnable接口的类作为参数传递给Thread类的构造方法来创建线程。
实现步骤
- 定义一个类,实现Runnable接口
public class MyRunnable implements Runnable {
- 重写run()方法
@Override
public void run() {
// 每条线程需要执行的代码
}
- 创建Runnable对象
MyRunnable runnable = new MyRunnable();
- 创建Thread对象,将Runnable对象作为参数传递
Thread thread = new Thread(runnable);
- 启动线程
thread.start();
示例
下面是一个简单的实现Runnable接口实现多线程的示例,用两个线程输出1-10之间的偶数和奇数。
public class MyRunnable implements Runnable {
private int start;
public MyRunnable(int start) {
this.start = start;
}
@Override
public void run() {
for (int i = start; i <= 10; i += 2) {
System.out.println(Thread.currentThread().getName() + ": " + i);
}
}
public static void main(String[] args) {
MyRunnable runnable1 = new MyRunnable(1);
MyRunnable runnable2 = new MyRunnable(2);
Thread thread1 = new Thread(runnable1);
Thread thread2 = new Thread(runnable2);
thread1.start();
thread2.start();
}
}
总结来说,继承Thread类的方式简单易懂,但是只能单继承,代码可读性和复用性差;实现Runnable接口的方式灵活可扩展,可避免单继承的限制,使用更加广泛。无论使用哪种方式,都需要记得重写run()方法,编写多线程的具体执行代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现多线程的两种方式继承Thread类和实现Runnable接口的方法 - Python技术站