JAVA,Thread.sleep()问题

2025-01-08 02:42:42
推荐回答(4个)
回答1:

t是新启的线程 在时间极小的那一瞬间 main thread已经运行到sleep之前了
如果你不sleep 你会发现main thread都是先运行
所以你不用期待他们之前会有个什么顺序 这和你sleep与否 sleep时间 相关 但也不保证精确到你写的时间点就一定会1:2的输出
记住3点 一个线程start只意味这3件事
1 线程在新的调用堆栈中执行
2 线程从new(new之后没start前状态都是NEW可以用getState()看)状态变为RUNNABLE
3 当线程有机会(不是写在前面就先运行,机会是JVM说的算的你无法确定何时)运行时,它的目标run()将运行

回答2:

多线程的启动也需要时间
再多线程启动的过程中
主线程继续往下面执行所以先执行砸墙

回答3:

线程是不按照顺序执行的,你多运行几次,就会发现惊喜

回答4:

主方法一个线程,t一个线程,t睡了10000,主方法睡了5000先醒,所以先砸墙