小编Yul*_*iri的帖子

forEach循环期间java8 java.util.ConcurrentModificationException

我使用java8流.这是我的数据结构:

Map< String, List< String >> mmessage = getSomeMessage();
Run Code Online (Sandbox Code Playgroud)

然后我通过地图和列表迭代:

 mmessage.entrySet().stream().forEach( entry -> {
            entry.getValue().stream().forEach( li -> {
                if ( lis.indexOf( li ) == - 1 )  {
                    lis.add( lineItem );
                }
            });
        });
Run Code Online (Sandbox Code Playgroud)

但得到并发修改异常:

java.util.ConcurrentModificationException
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1380)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at com.web3.buyer.roomba.RoombaTurn.lambda$received$3(RoombaTurn.java:296)
    at java.util.Iterator.forEachRemaining(Iterator.java:116)
    at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at com.web3.buyer.roomba.RoombaTurn.received(RoombaTurn.java:295)
    at com.web3.buyer.SystemBus.lambda$publishToTheQueue$0(SystemBus.java:51)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

从我的理解迭代通过map\list不应该导致这种行为.

java concurrency lambda java-8 java-stream

6
推荐指数
1
解决办法
3554
查看次数

选择大数据仓库

如今,我一直受到创建数据仓库以存储和处理大量数据的挑战.预计金额每天超过70亿次.数据应保存7天.平均事件大小约为0.5 - 1 Kb.我们需要将数据处理为:

  • 生成报告;
  • 火车模型.

目前我正在评估:

  • Google Bigquery
  • 红移
  • Stratio + Cassandra + AWS + EMR + EBS
  • Cloudera + AWS

所以我对以下内容感兴趣:

  • 您在公司内部使用的解决方案(框架,设置,数据库,节点数量等)
  • 任何实际成本示例/比较如果可能的话
  • 管理复杂性(devops)

bigdata cloudera google-bigquery amazon-redshift cassandra-2.0

5
推荐指数
1
解决办法
193
查看次数

ScheduledExecutorService中断定期执行具体任务

我有一个工作池,我定期使用ScheduledExecutorService帮助.现在我想停止定期执行某些任务,而其他任务应该不受影响.这个仪表的好方法是什么?

java multithreading scheduledexecutorservice

4
推荐指数
1
解决办法
115
查看次数

如何从不带参数的java中的静态泛型函数转换?

在我用过guava库的项目中.我有这样的事情:

Optional< User > loginUser( ) {
    User user = storage.get( request.id );

    boolean success = ( user == null ) ? 
            false : user.password.equals( request.password );

    return success == true ? Optional.of( user ) :Optional.absent ( );
}
Run Code Online (Sandbox Code Playgroud)

和编译器给我错误:

无法从Optional <Object>强制转换为Optional <User>

更多关于这方面的工作:

Optional< User > empty = Optional.absent ( );
return success == true ? Optional.of( user ) : empty;
Run Code Online (Sandbox Code Playgroud)

如何逃避创建空变量?

java generics guava

3
推荐指数
2
解决办法
355
查看次数