小编典典

Thread start() 和 Runnable run() 有什么区别

all

假设我们有这两个 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();
}

阅读 63

收藏
2022-05-26

共1个答案

小编典典

第一个例子: 没有多个线程。两者都在单个(现有)线程中执行。没有线程创建。

R1 r1 = new R1();
R2 r2 = new R2();

r1并且r2只是实现Runnable接口并因此实现run()方法的类的两个不同对象。当您调用时,r1.run()您正在当前线程中执行它。

第二个例子: 两个单独的线程。

Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);

t1并且t2是类的对象Thread。当您调用
t1.start(),它会启动一个新线程并在内部调用 的run()方法以在该新线程中执行它。r1

2022-05-26