我是线程的新手,我刚写了一个简单的程序来理解这个概念,这个程序给我的输出为:
一 四 三 回到主要 二 主
public class Sample_thread{
public static void main(String[] args){
Runnable m= new Master();
Thread master = new Thread(m);
Runnable p1 = new one();
Thread t1 = new Thread(p1);
Runnable p2 = new two();
Thread t2 = new Thread(p2);
Runnable p3 = new Three();
Thread t3 = new Thread(p3);
Runnable process_4 = new Four();
Thread t4 = new Thread(p4);
master.start();
t1.start();
t2.start();
t3.start();
t4.start();
System.out.println("Back in main");
}
}
我在每个线程的run方法中打印线程名称。为什么订单在显示中改变了?
我认为它会显示为
主 一 二 三 四 回到主要
任何人都能解释一下这个吗?这是因为我没有提到同步??
答案 0 :(得分:1)
这是你通过并发获得的行为。线程“同时”运行,但未定义顺序。
您可能希望阅读Oracle Concurrency Tutorial
答案 1 :(得分:1)
使用多个线程的重点是执行很多独立的操作,这些操作可以按任何顺序发生。如果您希望以设置顺序输出,则可以在一个线程中使用循环。