假设我们有这两个 Runnable:
class R1 implements Runnable {
public void run() { … }
…
}
class R2 implements Runnable {
public void run() { … }
…
}
那么这有什么区别:
public static void main() {
R1 r1 = new R1();
R2 r2 = new R2();
r1.run();
r2.run();
}
还有这个:
public static void main() {
R1 r1 = new R1();
R2 r2 = new R2();
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1.start();
t2.start();
}
最佳答案
第一个例子:没有多个线程。两者都在单个(现有)线程中执行。不创建线程。
R1 r1 = new R1();
R2 r2 = new R2();
r1
和 r2
只是两个不同的类对象,它们实现了 Runnable
接口(interface),从而实现了 run()
方法。当您调用 r1.run()
时,您正在当前线程中执行它。
第二个例子:两个独立的线程。
Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
t1
和 t2
是类 Thread
的对象.当您调用 t1.start()
时,它会启动一个新线程并在内部调用 r1
的 run()
方法以在其中执行它新线程。
关于java - Thread start() 和 Runnable run() 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579657/