一道面试题:实现一个容器,提供两个方法,add,size 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束线程2
作者:互联网
一道面试题:实现一个容器,提供两个方法,add,size 写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束线程2C](这里写自定义目录标题)
补充一种:
使用lockSupport实现:
public class Container5 {
volatile List lists = new ArrayList();
public void add(Object o){
lists.add(o);
}
static Threah t1 = null;
static Thread t2 =null;
public int size(){
return lists.size();
}
public static void main(String[] args) {
new Thread(()->{
log.debug("t2启动");
for (int i = 0; i < 10; i++) {
c.add(new Object());
log.debug("add " + i);
if (c.size() == 5) {
LockSupport.park();
LockSupport.unPark(t2);
}
}
}, "t1");
new Thread(()->{
log.debug("t2启动");
// if判断可以取消 效果一直
if (c.size() != 5) {
LockSupport.park();
log.debug("t2结束");
}
LockSupport.unPark(t1);
}," t2");
t2.start();
t1.start();
}
标签:容器,t2,个数,LockSupport,add,线程,new,size 来源: https://blog.csdn.net/qq_37999559/article/details/112159703