Я ищу способ добавления полей в поток на лету, переписывая байтовый код и перезагружая класс, не уверен, что это вообще возможно. Любые указатели приветствуются. Я нашел некоторую информацию об изменении и загрузке класса, и я знаю, что JRebel может без проблем плавно перекопировать ваш код, но не уверен, что здесь применяются те же подходы/инструменты.
Мотивация здесь заключается в изучении теоретически лучшей альтернативы потоковым локальным объектам. Если этот метод работает, я должен иметь возможность заменить thread local аннотацией, и результат должен превзойти текущую реализацию JDK.
PS: Пожалуйста, спаси меня "корень всей злой речи"
Уточнение прецедента:
Представьте, что у меня есть класс с ThreadLocal:
class A {
ThreadLocal<Counter> counter;
...
counter.get().inc()
}
Я хотел бы заменить это аннотацией:
class A {
@ThreadLocal
Counter counter;
...
counter.inc()
}
Но вместо того, чтобы генерируемый выше код был сгенерирован, я хотел бы мутировать Thread таким образом, что Thread теперь будет иметь поле Acounter, а фактический код будет:
class A {
// Nothing here, field is now in Thread
...
Thread.currentThread().Acounter.inc()
}