|
Spring @Cacheable впадает в бесконечный цикл
|
|||
---|---|---|---|
#18+
rabiter Да, это мне подойдет, использовать по ConcurrentHashMap на метод. Только для методов без параметров это выглядит глуповато, потому что в мапе для них может быть максимум одно значение. Если программа своя, то сделайте два типа HashMap'ов: один обычный, второй выроденный (только для одного значения). Кто же мешает? Ну, или в крайнем случае, создай топик на форуме (тут ткие переодически проскакивают): "можно ли создать Hashmap в котором будет только одно значение?", а мы все дружно в нем ответим "разрешаем - создавайте" ))) IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2019, 15:57 |
|
Spring @Cacheable впадает в бесконечный цикл
|
|||
---|---|---|---|
#18+
Ок, всем спасибо за советы! В итоге я вообще подумал, ну его нафиг, не буду использовать computeIfAbsent Пусть несколько потоков вычисляют значение, если его нет в кеше, я не буду никого блокировать. А как вычислят - положу потом в кэш через putIfAbsent. Не хочу словить дедлок (ну вдруг получится так, что method1 вызывает method2, а тот в свою очередь вызывает method1). Т.е. это маловероятно очень, но такое может быть чисто теоретически, и этого довода мне достаточно, чтобы отказаться от идеи. А так, нет блокировок - нет проблем. А если где-то вычисление значения слишком дорогое, чтобы до него допускать сразу несколько потоков, то я наложу внутри ручной лок вот и все. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.12.2019, 01:29 |
|
|
start [/forum/topic.php?fid=59&msg=39898903&tid=2120999]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 128ms |
0 / 0 |