有些人可以帮我理解下面的问题: -
Thread t=new Thread()
或t.start()
start()
方法调用如何实现run()
?答案 0 :(得分:1)
在调用Start()方法时创建堆栈,直到创建所需的信息 堆栈不可用。
您调用的Thread类在其start方法中运行后调用此代码。 [实际上它是Start()方法实际上创建了一个新线程(不是Thread类,而是 真正的进程thrad)并在新线程中调用run()。例如:如果你调用run()而不是start ()在你的runnable类中。不会创建新的线程。]
没有。我们无法为线程分配特定的内存量。
答案 1 :(得分:1)
来自Thread的Javadoc:
线程是程序中执行的线程。 Java虚拟机允许应用程序同时运行多个执行线程。
每个帖子都有优先权。具有较高优先级的线程优先于具有较低优先级的线程执行。每个线程可能也可能不会被标记为守护进程。当在某个线程中运行的代码创建一个新的Thread对象时,新线程的优先级最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护进程时才是守护进程线程。
当Java虚拟机启动时,通常会有一个非守护程序线程(通常调用某个指定类的名为main的方法)。 Java虚拟机继续执行线程,直到发生以下任一情况:
现在,问题。
构造函数创建一个新线程。它使用start方法运行。
来自Thread的源代码:
public void run() {
if (target != null) {
target.run();
}
}
不,您无法为每个线程分配内存。操作系统(Windows,Unix,OS X)控制线程的创建和销毁方式。 JVM可以通过字符串标识符访问每个线程。
您可以阅读Thread source code以获取有关Thread类的更多信息。