- Thread 才是 Java 里对线程的唯一抽象,Runnable 只是对任务(业务逻辑)的抽象。Thread 可以接受任意一个 Runnable 的实例并执行。
- Thread 自身实现了Runnable接口
- 一般情况下使用Runnable方式创建线程。除非你需要重写Thread类除了Run()方法外的其他方法来自定义线程,否则不建议使用继承Thread的方式来创建。这很重要,因为除非程序员打算修改或增强类的基本行为,否则不应将类归为子类。
一个线程的start()方法只能被调用一次,多次调用会报错。
1.通过继承Thread
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
PrimeThread p = new PrimeThread(143);
p.start();
-------------------------------------------------------
2.通过实现Runnable
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
https://www.yuque.com/wanghuaihoho/gobbon/bwrhod