实现多线程的两种基本方法以及区别
时间: 2024-04-29 19:23:50 浏览: 8
1. 继承Thread类
继承Thread类是实现多线程的一种基本方法。在Java中,Thread类是一个抽象类,当需要使用多线程时,通常需要继承Thread类,并重写run()方法。在run()方法中编写线程要执行的代码。然后创建一个Thread对象,调用start()方法启动线程。
示例代码:
```
class MyThread extends Thread {
public void run() {
// 线程要执行的代码
}
}
public class Main {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
```
2. 实现Runnable接口
实现Runnable接口是实现多线程的另一种基本方法。在Java中,Runnable接口只有一个run()方法,当需要使用多线程时,通常需要实现Runnable接口,并在run()方法中编写线程要执行的代码。然后创建一个Thread对象,将实现了Runnable接口的对象作为参数传递给Thread的构造函数,调用start()方法启动线程。
示例代码:
```
class MyRunnable implements Runnable {
@Override
public void run() {
// 线程要执行的代码
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
```
区别:
1. 继承Thread类的方式比实现Runnable接口的方式更简单,因为继承Thread类只需要重写run()方法,而实现Runnable接口需要实现run()方法。
2. 实现Runnable接口的方式比继承Thread类的方式更灵活,因为实现Runnable接口可以避免Java单继承的限制,同时也可以将线程的代码和其他类的代码分离,提高代码的可读性和可维护性。
3. 实现Runnable接口的方式比继承Thread类的方式更适合多个线程共享同一个资源的情况,因为多个线程可以共享实现了Runnable接口的对象。而继承Thread类的方式每个线程都需要创建一个新的对象,无法共享。