线程执行顺序。?

public class TestMyThread {
public static void main(String[] args) {
MyRunnable myRunnable=new MyRunnable();
Thread thread=new Thread(myRunnable,"myRunnable");
thread.start();
System.out.println(thread.getName());
}
}

实现runnable接口

 public class MyRunnable implements Runnable{
@Override
public void run() {
for (int i=0;i<10;i++){
System.out.println("MyRunnable" + new Date().getTime() + "---"+i + "--count");
}
}
}

打印结果

myRunnable
MyRunnable1629025434531---0--count
MyRunnable1629025434531---1--count
MyRunnable1629025434531---2--count
MyRunnable1629025434531---3--count
MyRunnable1629025434531---4--count
MyRunnable1629025434531---5--count
MyRunnable1629025434531---6--count
MyRunnable1629025434531---7--count
MyRunnable1629025434531---8--count
MyRunnable1629025434531---9--count
Process finished with exit code 0

每次运行结果都是这样,似乎是先执行了,打印语句再开启线程执行。
我开启线程是在打印语句之后,预想会出现类似下面这种情况。
MyRunnable1629025434531---0--count
myRunnable
MyRunnable1629025434531---1--count

预想的情况始终没有出现,是因为main方法按顺序执行语句,直到执行到打印语句,,线程还没被真正执行(我猜测的)
为什么,不懂,请大佬指点一二。

回答

首先你可以看看println的源码,使用了synchronized 关键字修饰,每次只能有一个线程打印输出,线程My thread 很难抢到锁,因为需要一些准备操作,你可以尝试给几Thread.sleep,模拟耗时操作,你这种测试代码运行过快很难模拟真实情况,再一个就是多线程不要大量使用println语句测试,

以上是线程执行顺序。?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>