Я хочу запустить определенный класс потока в изолированной песочнице, в то время как остальная часть приложения может работать без ограничений.
Можно ли прикрепить менеджер безопасности только для определенного класса потока?
-
РЕДАКТИРОВАТЬ: Используя подсказку Питера, я создал следующую переменную в моем собственном менеджере безопасности:
private static ThreadLocal<Boolean> isChatbot = new InheritableThreadLocal<Boolean>() {
@Override protected synchronized Boolean initialValue() {
boolean value = (Thread.currentThread() instanceof ChatBot);
return value;
}
@Override protected synchronized Boolean childValue(Boolean parentValue) {
boolean value = (Thread.currentThread() instanceof ChatBot || parentValue);
return value;
}
};
ChatBot - это мой определенный класс потоков, которые я хочу запускать с ограничениями. Поэтому в initialValue я даю значение «true» всем потокам ChatBot, а в childValue я также даю значение «true» всем потомкам, порожденным потоком ChatBot.
Странно, это не работает. Я установил точку останова внутри childValue и увидел, что выполнение никогда не выполняется, поэтому дочерние потоки получают значение false.
Что я делаю не так?