Как инициализировать локальный поток с типом Map, используя ThreadLocal.withInitial? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь инициализировать локальный поток типа Map, используя метод "ThreadLocal.withInital"

Я могу приступить к установке нового ThreadLocal и добавлению метода установки для продолжения инициализации. Но я пытаюсь найти способ, можно ли это сделать с помощью начальной.

private static final ThreadLocal<Map<Date, Boolean>> dateBooleantl = new ThreadLocal<>();

Ожидаемый результат:

private static final ThreadLocal<Map<Date, Boolean>> dateBooleantl = ThreadLocal.withInitial(<Hash-map that is set with a predefined date and a boolean>)

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Метод ThreadLocal.withInitial принимает параметр Functional, поэтому он может быть лямбда-выражением, например:

private static final ThreadLocal<Map<Date, Boolean>> dateBooleantl = ThreadLocal.withInitial(() -> {
    Map<Date, Boolean> map = new HashMap<>();
    map.put(new Date(), true);
    return map;
});
0 голосов
/ 04 января 2019

Может быть, это:

private static final ThreadLocal<Map<Date, Boolean>> dateBooleantl = ThreadLocal.withInitial(() -> {
        Map<Date, Boolean> map = new HashMap<>();
        map.put(new Date(), true);
        //do other stuff...
        return map;
    });
...