java链表自动添加空值
我有一个全局静态链表,我在其中添加来自不同线程的数据,并配置一个调度程序,每分钟运行一次,以处理新的子列表,所有数据与父列表相同 注意:数据不断从不同的线程添加到列表中,因此我需要为当前处理获取一组数据,并在处理完后将其删除 当应用程序运行时,列表中存在我从未添加的空值,并且添加的值现在不存在
输出类似于
A
B
C
D
E
E
FF
H
FF
SS
DD
D
null
null
null
null
为最后四个空值添加的数据是AA
、BC
、DA
、AC
。当有超过500个请求时,这种情况最常见。我已经尝试了所有的方法,并尝试了各种调试方法,但即使我没有添加空值,列表中仍然存在导致数据丢失的空值
甚至大小也和我添加的数据数量一样。 下面是我的代码
全局列表类
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
public class QueryData {
private static List<String> queryData;
private static QueryData instance;
private QueryData() {
if (queryData == null) {
queryData = initializeQueryData();
}
}
private List<String> initializeQueryData() {
System.out.println("Initializing new query Object" + new Date());
queryData = new LinkedList<>();
return queryData;
}
public static synchronized QueryData getInstance() {
if (instance == null) {
instance = new QueryData();
}
return instance;
}
public List<String> getQueryData() {
return queryData;
}
public boolean add(String value) {
if (value == null || value.isEmpty()) {
throw new IllegalArgumentException("Value NULL on list QueryData");
}
return queryData.add(value);
}
public void clearQueryData() {
initializeQueryData();
}
}
类,从中我的数据被添加到列表中
class Processor {
public boolean add(String value){
QueryData.getInstance().add(value);
}
public void processList(List<String> list) {
for(String str : list) {
System.out.println(str);
QueryData.getInstance().getQueryData().remove(str);
}
}
}
类,该类由调度程序调用
class Test {
public void callProcess() {
List<String> processingList = new LinkedList<>();
processingList.addAll(QueryData.getInstance().getQueryData());
Processor p = new Processor ();
p.processList(processingList);
}
}
Jersey web服务类,通过该类向其中添加数据。它在一分钟内被调用超过10000次
@Path("/")
class Service {
@GET
@Path("/add/{value}")
public void callProcess(@PathParam("value") String value) {
Processor p = new Processor ();
p.add(value);
}
}
共 (0) 个答案