您的位置:首页 > 其它

当数据达到2000或者等待5秒后再次运行

2015-11-19 18:29 267 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/leo030/article/details/84751271
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

class MyObject implements Runnable {
private Object lock;//线程锁

private List<Map<String,Object>> codes = new ArrayList<Map<String,Object>>();

public MyObject() {
this.lock = new Object();
}

public void setCodes(List<Map<String,Object>> list){
codes.addAll(list);
System.out.println("codes size="+codes.size());
if(codes.size()>=2000){
synchronized (lock) {
System.out.println("i'm going.");
codes.removeAll(codes);
lock.notify();
}
}
}

public void run() {
try {
while(1==1){
synchronized (lock) {
lock.wait(5000L);
System.out.println("has going");
}
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public class Wait {
public static void main(String[] args) {
MyObject o = new MyObject();
new Thread(o).start();
int i=0;
while(1==1){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("123", "123");
list.add(map);
o.setCodes(list);
i++;
if(i%2000==0){
try {
TimeUnit.SECONDS.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐