public synchronized Map getMap(){
if(listss.size()==0){
return null;
}else{
return listss.remove(0); // 这里的remove会使得共享的listss一直减少到到0个元素,这样就返回了null
}
}最后当你调用以下语句的时候,就会出现NPE了
Map m = getMap(); // 这里得到的m已经是null了
String url = m.get("URL").toString(); // NPE会发生
if(listss.size()==0){
return null;
}else{
return listss.remove(0); // 这里的remove会使得共享的listss一直减少到到0个元素,这样就返回了null
}
}最后当你调用以下语句的时候,就会出现NPE了
Map m = getMap(); // 这里得到的m已经是null了
String url = m.get("URL").toString(); // NPE会发生
if(listss.size()==0){
return null;你下面又没判断 null ,当然就出错了
public void run() {
while(true){
Map m = getMap();
if (m == null) // 加上判断
break;
String url = m.get("URL").toString();
String id = m.get("ID").toString();
if(m != null){
try {
// byte[] b = downloadForHttp(url);
System.out.println("更新成功...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}