3

我们可以像在下面的类中那样使用直接运行方法吗?它产生的结果与我们使用 t1.start(); 时的结果相同。仅使用 start 方法来调用 run 有什么原因吗?

public class runcheck extends Thread{

    public void run(){

        System.out.println(" i am run");

    }
    public static void main(String args[]){

        runcheck as = new runcheck();
        Thread t1 = new Thread(as);
        t1.run();

    }

}
4

3 回答 3

8

是的,但它将在同一个线程中运行。这相当于在普通对象上调用方法。

start()是你想要的。它调用一个native实际生成操作系统的方法Thread来执行run()代码。

于 2013-09-06T15:21:44.847 回答
1

从此:_

start()异步调用run()(非阻塞)

whilerun()直接调用导致同步调用(阻塞)

于 2013-09-06T16:10:12.767 回答
0

Yes, you can invoked run directly from main method, in this case the main method and run method runs one after the other.

Order

main -> t.run() -> main - Only 1 Thread

But if you call start method on the instance t1, then the run method and the main method runs parallely.

main -> t.start() -> main - 1st Thread

run() - 2nd Thread.

于 2013-09-06T15:41:41.590 回答