如何解决Java线程执行的顺序
JVM决定何时将控制权从主线程转移到第二个线程。由于主线程在启动第二个线程后不会执行太多工作,因此JVM可以在将控制权转移到第二个线程之前完成工作。
当您使用tt.run()
而不是时,tt.start()
您不会启动第二个线程。您正在run()
主线程中执行该方法。因此,您"New
thread"
首先会看到输出。
解决方法
我尝试从一本书(Paul Hyde,Java Thread
Programming)中运行示例。它说线程的顺序将互换。但是我总是得到:之后打印10个“主线程”,然后打印10个“新线程”。更有趣的是:如果我将使用tt.run而不是tt.start,那么结果将相反。也许这本书太老了,示例基于JDK
1.2的原因???代码如下:
public class TwoThread extends Thread
{
public void run()
{
for (int i = 0; i < 10; i++)
{
System.out.println("New thread");
}
}
public static void main(String[] args)
{
TwoThread tt = new TwoThread();
tt.start();
for (int i = 0; i < 10; i++)
{
System.out.println("Main thread");
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。