在使用multi threading
编写程序时,我们在不同的线程中有一个包含run
方法的方法。他们使用thread.start
代替thread.run
。有人可以解释一下,没有按名称调用方法的原因是什么?
答案 0 :(得分:0)
Thread.run()方法将在当前主线程或主线程中执行该方法。 而Thread.start()方法将在一个单独的线程中执行逻辑。
更多信息 What's the difference between Thread start() and Runnable run()
答案 1 :(得分:0)
如果直接在类上调用run()方法,它将执行主线程中的代码。使用Thread.start()方法时,将创建一个新线程。然后,当允许线程运行时,JVM会调用run()方法。
答案 2 :(得分:0)
Thread.start()创建一个新线程并并行调用runnable,而Thread.run()只是一个方法调用。没有线程创建,所以我们主要使用Thread.start()
答案 3 :(得分:0)
Thread.start
将根据当前正在运行的代码和调用 Thread.run
函数创建新主题。 Thread.run
会调用此类的run
方法,而无需创建新主题。 Thread.java:
public synchronized void start() {
/**
* This method is not invoked for the main method thread or "system"
* group threads created/set up by the VM. Any new functionality added
* to this method in the future may have to also be added to the VM.
*
* A zero status value corresponds to state "NEW".
*/
if (threadStatus != 0 || this != me)
throw new IllegalThreadStateException();
group.add(this);
start0();
if (stopBeforeStart) {
stop0(throwableFromStop);
}
}
public void run() {
if (target != null) {
target.run();
}
}
JDK Thread
课程:http://hg.openjdk.java.net/jdk6/jdk6/jdk/file/5672a2be515a/src/share/classes/java/lang/Thread.java