使用哪种方法运行线程?

时间:2014-12-01 12:07:56

标签: java multithreading runnable

我知道start()创建一个新线程并调用该线程内的run(),从而执行线程。但问题的正确答案是什么......是start()还是run()?为什么?

4 个答案:

答案 0 :(得分:5)

您应该调用myThread.start()因为start()start0()进行本机调用,实际上在新线程中创建并执行run()方法。 run()将执行当前主题中的代码。

run()方法定义要执行的start() new / separate 线程中执行run(),而调用run()直接在当前线程中执行run()

答案 1 :(得分:1)

在新线程上调用run方法的机制是extralinguistic:它不能用Java代码表示。这是start方法中的关键行:

 start0();

start0是一个本机方法,其调用将:

 •cause a new native thread-of-execution to be created;
 •cause the run method to be invoked on that thread.

答案 2 :(得分:0)

您应该调用Thread.start(),因为它只创建一个OS线程并将此作业分配给单独的方法堆栈。 如果你调用Thread.run它将像纯Java代码而不是线程一样工作。它将使用主线程堆栈。

答案 3 :(得分:0)

thread.start()是正确的方法。因为在内部它实际上创建了一个单独的线程,即一个单独的调用Stack被创建并在该线程上调用thread.run()。 当您调用thread.start()方法时,JVM会在内存中为此线程创建一个单独的分区。

如果你做thread.run(),它就像你在单线程环境中执行的普通方法。就像System.out.println("xx");

一样

请阅读您更了解的文档 Link