В настоящее время я реализую среду выполнения (т.е. набор функций) для языка формул. Некоторым формулам необходимо передать контекст, и я создал класс EvaluationContext, который содержит все свойства, к которым мне нужен доступ во время выполнения.
Использование ThreadLocal
кажется хорошим вариантом, чтобы сделать этот контекст доступным для функций времени выполнения. Другой вариант - передать контекст в качестве параметра нужным функциям.
Я предпочитаю использовать ThreadLocal, но мне было интересно, есть ли какое-либо снижение производительности в отличие от передачи контекста оценки через параметры метода.