Я столкнулся с этой проблемой, пытаясь выполнить аутроверку класса runnable и создать разные экземпляры его в разных вызовах и сохранить его в массиве.
xml:
<bean name="threadName" Class="ABC" scope="prototype" />
В моем коде я пробую что-то вроде этого:
public class ThreadHandler{
@Autowired
private ABC threadName;
//getter
ABC getThreadName(){
return threadName;
}
public void someFunction(){
List<ABC> abc = new ArrayList(ABC>();
for (int i=0;i<SOME_CONST;i++){
ABC tName = getThreadName();
abc.add(tName);
tName.start();
}
}
}
Пусть ABC
- класс, который является Thread/Runnable/Callable
.
Таким образом, он выбрасывает java.lang.IllegalThreadStateException
.
Но, он отлично работает, если я использую ABC tName =appContext.getBean("threadName",ABC.class);
Почему это происходит?
Разве мы не получаем новый экземпляр при попытке получить объект из метода getMethod?