小编Rya*_*yan的帖子

如何使用*非case*类从Scala反序列化JSON?

我正在编写一个需要从JSON序列化和反序列化的Scala应用程序.一些JSON对象有超过22个字段,所以我不能使用case类(我也不能改变格式).我能够找到的所有Scala JSON库只能使用case类(而不是普通类)工作.

鉴于此,将大型JSON对象(具有超过22个字段)反序列化为Scala非案例类的最简单方法是什么?它不一定是完全自动的,但理想情况下我正在寻找比反序列化为Map [String,Any]并手动完成所有操作更少痛苦的事情.

json scala

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

Java 8并行流似乎并不实际并行工作

我正在尝试使用Java 8的parallelStream()并行执行几个长时间运行的请求(例如Web请求).简化示例:

List<Supplier<Result>> myFunctions = Arrays.asList(() -> doWebRequest(), ...)

List<Result> results = myFunctions.parallelStream().map(function -> function.get()).collect(...
Run Code Online (Sandbox Code Playgroud)

因此,如果有两个函数分别阻塞2秒和3秒,我希望在3秒后得到结果.然而,它确实需要5秒钟 - 即似乎函数按顺序执行而不是并行执行.难道我做错了什么?

编辑:这是一个例子.当我想要它〜2000时,花费的时间是~4000毫秒.

    long start = System.currentTimeMillis();

    Map<String, Supplier<String>> input = new HashMap<String, Supplier<String>>();

    input.put("1", () -> {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "a";
    });

    input.put("2", () -> {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "b";
    });

    Map<String, String> results = input.keySet().parallelStream().collect(Collectors.toConcurrentMap(
            key -> key,
            key -> {
                return input.get(key).get();
            }));

    System.out.println("Time: " …
Run Code Online (Sandbox Code Playgroud)

java parallel-processing concurrency java-8

0
推荐指数
1
解决办法
2530
查看次数

标签 统计

concurrency ×1

java ×1

java-8 ×1

json ×1

parallel-processing ×1

scala ×1