线程间通信方式之:volatile关键字
- volatile:
线程通信的第一种方式:volatile关键字基于volatile关键字来实现线程间通信是基于共享内存的思想:多个线程同时监听某个某个变量,当该变量发生变量的时候,线程能够感知并执行相应的业务。
public class TestSync {
//定义一个共享变量来实现通信,通过volatile关键字来修饰。
static volatile boolean notice = false;
public static void main(String[] args) {
List<String> list = new ArrayList<>();
//线程A
Thread threadA = new Thread(() -> {
for (int i = 0; i <= 10; i++) {
list.add("abc");
System.out.println("线程A向list中添加一个元素,此时list中的元素个数为:"+list.size());
try {
Thread.sleep(5000);
}catch (InterruptedException e){
e.printStackTrace();
}
if(list.size() == 5){
notice = true;
}
}
});
//线程B
Thread threadB = new Thread(() -> {
while (true){
if(notice){
System.out.println("线程B收到通知,开始执行自己的业务!");
break;
}
}
});
//需要先启动线程B
threadB.start();
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
threadA.start();
}
}
程序运行结果为: