相关疑难解决方法(0)

递归ConcurrentHashMap.computeIfAbsent()调用永远不会终止.错误或"功能"?

前段时间,我发表了一篇关于递归计算斐波纳契数的Java 8函数式方法的博文,其中包含一个ConcurrentHashMap缓存和新的有用computeIfAbsent()方法:

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class Test {
    static Map<Integer, Integer> cache = new ConcurrentHashMap<>();

    public static void main(String[] args) {
        System.out.println(
            "f(" + 8 + ") = " + fibonacci(8));
    }

    static int fibonacci(int i) {
        if (i == 0)
            return i;

        if (i == 1)
            return 1;

        return cache.computeIfAbsent(i, (key) -> {
            System.out.println(
                "Slow calculation of " + key);

            return fibonacci(i - 2) + fibonacci(i - 1);
        });
    }
} …
Run Code Online (Sandbox Code Playgroud)

java recursion concurrenthashmap java-8

71
推荐指数
2
解决办法
6258
查看次数

标签 统计

concurrenthashmap ×1

java ×1

java-8 ×1

recursion ×1