炫意html5
最早CSS3和HTML5移动技术网站之一

线程执行顺序。?

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语句测试,

炫意HTML5 » 线程执行顺序。?

Java基础教程Android基础教程