private static List<Mashine> mashines = new ArrayList<>();
private void pingList() {
service.submit(() -> {
while (true) {
mashines.parallelStream().forEach(m -> {
logger.info("pinging..." + m.getName());
m.setOnline(new File("//" + m.getName() + "/Expo").exists());
});
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
logger.info(e.getMessage());
}
}
});
}
当我做mashines.remove(Mashine)
线程时,它没有ping但没有给出异常
当我执行mashines.add(Mashine)
线程时,几乎没有延迟(0-40秒),并使用添加的Mashine进行更新的列表。
我无法将mashines
标记为已同步,因为其他方法也可用于此字段。并发列表也有很大的滞后。
我该如何纠正?从pingList()
中删除时,再叫另一个mashines
吗?