Я использую ThreadLocal
переменные (через переменные Clojure, но следующее то же самое для простых ThreadLocal
в Java) и очень часто сталкиваюсь с проблемой, что я не могу быть уверен, что определенный путь к коду будут приняты в той же теме или в другой. Для кода под моим контролем это, очевидно, не слишком большая проблема, но для полиморфного стороннего кода иногда даже нет способа статически определить, безопасно ли предполагать однопоточное выполнение.
Я склонен думать, что это неотъемлемая проблема с ThreadLocal
s, но я хотел бы услышать некоторые советы о том, как их безопасно использовать.