概述
今天在整理之前学习资料时,偶然看见之前自己写的demo:
public class MyTest {
static volatile boolean temp = true;
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(() -> {
while (temp) {
Thread.onSpinWait(); // Thread.sleep(0);
}
System.out.print("检测到变量为false,退出循环");
});
thread.start();
Thread.sleep(3000L);
temp = false;
}
}
运行结果:
检测到变量为false,退出循环
为了使线程能够更快的循环,以便让我能够及时的知道temp的状态,尽快的进行下一次循环,在方法中我比较粗暴的加入了Thread.onSpinWait()方法,Thread.onSpinWait()方法大家可以认为是Thread.sleep(0)的作用,
那么我为什么要加一个睡眠0毫秒的动作呢?让线程挂起0毫秒有什么用途呢?
线程状态
在Java中,线程有三个基本的状态:就绪状态(Runnable)、运行状态(Running)和阻塞状态(Blocked)。
- 就绪状态(