方法一:普通方法实现
缺点:线程2死循环
import java.util.ArrayList;
import java.util.concurrent.TimeUnit;
public class Container {
volatile ArrayList<Object> list=new ArrayList<>();//volatile保证可见性
private void add(Object obj) {
list.add(obj);
}
private int size() {
return list.size();
}
public static void main(String[] args) {
Container container=new Container();
new Thread(()->{
System.out.println("线程1启动...");
for(int i=0;i<10;i++) {
container.add(new Object());
System.out.println("加入对象"+i);
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("线程1结束...");
},"线程1").start();
new Thread(()->{
System.out.println("线程2启动...");
while(true) {
if(container.size()==5) {
break;