实现多线程的两种方法
实现Runnable接口
public class RunnableStyle implements Runnable {
public static void main(String[] args) {
Thread thread = new Thread(new RunnableStyle());
thread.start();
}
@Override
public void run() {
System.out.println("用Runnable方法实现线程");
}
}
继承Thread类
public class ThreadStyle extends Thread{
@Override
public void run() {
System.out.println("用Thread类实现线程");
}
public static void main(String[] args) {
new ThreadStyle().start();
}
}
对比
结论:Runnable接口更好
- 从代码架构角度,具体的任务(run方法〉应该和“创建和运行线程的机制(Thread类)”解耦。
- 使用继承Thread的方式的话,那么每次想新建一个任务,只能新建一个独立的线程,而这样做的损耗会比较大。如果使用Runnable和线程池,就可以大大减小这样的损耗。
- 继承Thread类以后,由于Java语言不支持双继承,这样就无法再继承其他的类,限制了可扩展性。
常见错误
- 线程池是创建线程的方法(×)
底层也是 new Thread() - 定时器创建线程(×)
- 匿名内部类
- Lambda表达式

浙公网安备 33010602011771号