线程间交换信息的方式--LockSupport接口
3.使用lockSupport接口中的park()和unpark()方法
package edu.hubu.threadexchange; import java.util.ArrayList; import java.util.List; import java.util.concurrent.locks.LockSupport; /** * created by Sugar 2019/10/11 23:53 */ public class LockSupportDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); // 实现线程B final Thread threadB = new Thread(() -> { if (list.size() != 5) { LockSupport.park(); } System.out.println("线程B收到通知,开始执行自己的业务..."); }); // 实现线程A Thread threadA = new Thread(() -> { for (int i = 1; i <= 10; i++) { list.add("abc"); System.out.println("线程A向list中添加一个元素,此时list中的元素个数为:" + list.size()); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } if (list.size() == 5) LockSupport.unpark(threadB); } }); threadA.start(); threadB.start(); } }