Thread和Runable的区别

1、 Thread是类,Runable是接口;java中要实现多线程,要么继承Thread类并覆写本类中的run()方法,要么实现Runnable接口的run()方法。

这两中方式最终都是通过调用start()方法来实现多线程。切记不能直接调用Thread类或Runnable对象的run()方法,因为直接调用run()方法,只会执行同一个线程中的任务,而不会启动新线程。调用start()方法将会创建一个执行run()方法的线程。

2、在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

  • 避免点继承的局限,一个类可以实现多个接口
  • 适合与资源的共享

3、Thread和Runnable是两种完全不相同的多线程实现:一个是多个线程分别完成自己的任务,一个多个线程共同完成一个任务。多数情况下我们实现多线程应该使用Runnable接口,这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应该为该类(Thread)创建子类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MyRunnable implements Runnable {
@Override
public void run() {
// TODO: do something
}
}
......
public static void main(String[] args) {
Runnable r = new MyRunnable();
Thread t1 = new Thread(r, "线程1");
Thread t2 = new Thread(r, "线程2");
t1.start();
t2.start();
}