Jdk env — предварительная версия 21.0.1.
Я пробую для распространения любого состояния между потоком и виртуальным потоком обычным способом.
Кроме того, полная реализация будет совместима со сценариями ThreadLocal
например:
[распространение контекста]: (https://github.com/micrometer-metrics/c ... ropagation)
[TransmittableThreadLocal]: https://github.com/alibaba/transmittabl ... lob/master /README-EN.md)
В jdk 21 поток определен как поток платформы, и на этот раз моими целями являются следующие три сценария
- виртуальные потоки -> потоки платформы.
- темы платформы -> виртуальные потоки.
- виртуальные потоки -> виртуальные потоки.
- виртуальные потоки -> виртуальные потоки
- виртуальные потоки -> виртуальные потоки
li>
Например:
Код: Выделить всё
@SuppressWarnings({"unchecked", "rawtypes"})
static class PropagatingTaskDecorator implements TaskDecorator {
public record Tracer(String traceId, String spanId, String parentId) {
}
private final ScopedValue[] keys;
public PropagatingTaskDecorator(ScopedValue... keys) {
this.keys = keys;
}
static class ScopedValueMap {
public static final ScopedValue TRACER_SCOPED_VALUE = ScopedValue.newInstance();
private final Map
Подробнее здесь: [url]https://stackoverflow.com/questions/77716273/how-to-propagating-context-through-structuredtaskscope-by-scopedvalue-by-the-wa[/url]