字段list.remove时线程崩溃中的流

时间:2018-06-25 18:49:29

标签: spring multithreading stream

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吗?

0 个答案:

没有答案