代码:
public class ThreadNaming extends Thread{
public void run()
{
System.out.println("running");
}
public static void main(String[] args)
{
ThreadNaming t1 = new ThreadNaming();
t1.start();
System.out.println(t1.getName());
}
}
怀疑:根据我的理解,一旦线程开始执行main函数,一旦t1.start()
遇到新的调用堆栈并创建一个新线程。这个新创建的线程执行run方法,然后控制返回执行main()
函数的原始线程,然后执行下一个System.out.println(t1.getName())
,所以根据这个流输出应该是:
running
Thread-0
但是eclipse显示以下输出
Thread-0
running
我用google搜索线程的流量控制但没有得到任何东西,我无法理解为什么会发生这种情况?任何人都可以通过适当的控制来解释它的原因吗?
注意:Thread-0是线程的名称
独特部分:我不想实现其他问题中描述的行为,我想知道主线程和新线程如何同时执行的原因,因为我在教程中读到调度程序只能执行一次一个线程。
答案 0 :(得分:0)
从我收集到的信息来看,这是完全合理的
在main
的开头,主线程正在运行。然后,您创建ThreadNaming
类的实例。在下一行,您调用t1.start();
启动新主题。
虽然这可以调用,但您的主 为了强制线程之间的同步,您必须使用其他一些方法,例如 注意:通常better off Thread
可以/仍然会运行,在之前调用System.out.println(t1.getName());
它到System.out.println("running");
ThreadNaming
}类。绝对无保证 run()
将在<{strong> getName()
电话之前执行
wait
(notify
}和join
。implement
Runnable
extend
Thread
<div class="myclass row">
<div class="col-xs-3" style="background-color: #1b6d85">1 assdasddasd</div>
<div class="col-xs-9" style="background-color: #66512c">2 asas</div>
</div>
{/ 1}}。