线程运行方法

时间:2013-09-06 15:21:32

标签: java

我们可以使用直接运行方法,如下面的类所做。它产生了相同的结果 就像我们使用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();

    }

}

3 个答案:

答案 0 :(得分:8)

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

start()就是你想要的。它调用实​​际生成操作系统native的{​​{1}}方法来执行Thread代码。

答案 1 :(得分:1)

来自this

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

在调用run()时直接导致同步调用(阻塞)

答案 2 :(得分:0)

是的,您可以直接从run方法调用main,在这种情况下,main方法和run方法会一个接一个地运行。

顺序

main -> t.run() -> main - 只有1个帖子

但是,如果您在实例start上调用t1方法,那么run方法和main方法会并行运行。

main -> t.start() -> main - 第一个帖子

run() - 第二线程。