参考文档:https://blog.csdn.net/shijiejiujiuba/article/details/79034307
神奇的使用的东西
/** * @Description 简单介绍一下LockSupport的使用 https://blog.csdn.net/shijiejiujiuba/article/details/79034307 * @Author liguang * @Date 2022/03/10/00:15 */ public class ThreadWattingTestOne { public static void main(String[] args) { final Thread thread1 = new Thread(() -> { int i = 0; do { i++; } while (i != 10000); LockSupport.unpark(Thread.currentThread()); System.out.println("hello,world"); LockSupport.park(); System.out.println("hello,park"); LockSupport.park(); }); thread1.start(); try { thread1.join(); } catch (InterruptedException e) { e.printStackTrace(); } } }
/** * @Description 让线程之间进行交互 * @Author liguang * @Date 2022/03/10/00:15 */ public class ThreadWattingTestTwo { public static void main(String[] args) { Thread thread1 = new Thread(() -> { LockSupport.park(); System.out.println("hello,threadone............"); }); try { thread1.start(); Thread.sleep(10000); LockSupport.unpark(thread1); } catch (InterruptedException e) { e.printStackTrace(); } } }
/** * @Description 线程如果因为调用park而阻塞的话,能够响应中断请求(中断状态被设置成true),但是不会抛出InterruptedException。 * @Author liguang * @Date 2022/03/10/00:15 */ public class ThreadWattingThree { public static void main(String[] args) { Thread thread1 = new Thread(() -> { LockSupport.park(); System.out.println("hello,threadone............"); }); try { thread1.start(); Thread.sleep(10000); thread1.interrupt(); System.out.println("hello,world"); } catch (InterruptedException e) { e.printStackTrace(); } } }
处于waitting状态不会消耗CPU,但是CPU的切换需要消耗CPU
https://baijiahao.baidu.com/s?id=1712014506366682907&wfr=spider&for=pc