У меня 3 класса обслуживания (пока предположим, что A, B, C). Каждый из них на самом деле представляет собой нить. По моему требованию у каждого из них должно быть бесконечное l oop. Но всякий раз, когда я запускаю класс обслуживания с бесконечным l, oop bean-компонент других классов обслуживания не создается.
Если нет бесконечного l oop, создается bean-компонент каждого класса. Почему это происходит?
Предположим, это Служба А.
@Service
@Log4j2
public class A implements Runnable {
private boolean isRunning = true;
@Override
@PostConstruct
public void run() {
log.debug("A Thread Started!");
while (isRunning) {
// just a sleep for 2 sec
}
}
}
Предположим, что это Служба Б.
@Service
@Log4j2
public class B implements Runnable {
private boolean isRunning = true;
@Override
@PostConstruct
public void run() {
log.debug("B Thread Started!");
while (isRunning) {
// just a sleep for 2 sec
}
}
}
Предположим, что это Служба C.
@Service
@Log4j2
public class C implements Runnable {
private boolean isRunning = true;
@Override
@PostConstruct
public void run() {
log.debug("C Thread Started!");
while (isRunning) {
// just a sleep for 2 sec
}
}
}
И это мой основной класс:
@SpringBootApplication
@Log4j2
public class Main {
@Autowired
public ApplicationContext context;
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
@Bean
@PostConstruct
public void createConnection() {
log.debug("Connecting to Server...");
// doing some staff
}
}
Теперь, если я бегу вот так, всегда будет этот журнал:
2020-07-14 21:21:52:129 [main] DEBUG support.DefaultListableBeanFactory:217 - Creating shared instance of singleton bean 'a'
2020-07-14 21:21:52:130 [main] DEBUG service.ProcessorService:27 - A Thread Started!
Если я помещу какой-либо журнал в while l oop класса A, то отображаются только эти журналы.
Если я прокомментирую часть l oop класса A и сохраню класс следующим образом:
@Service
@Log4j2
public class A implements Runnable {
private boolean isRunning = true;
@Override
@PostConstruct
public void run() {
log.debug("A Thread Started!");
/* while (isRunning) {
// just a sleep for 2 sec
}*/
}
}
затем получил это в журнале:
2020-07-14 21:30:31:198 [main] DEBUG support.DefaultListableBeanFactory:217 - Creating shared instance of singleton bean 'a'
2020-07-14 21:30:31:199 [main] DEBUG service.ProcessorService:27 - A Thread Started!
2020-07-14 21:30:31:199 [main] DEBUG support.DefaultListableBeanFactory:217 - Creating shared instance of singleton bean 'b'
2020-07-14 21:30:31:199 [main] DEBUG service.ReceivingProcessingService:46 - B Thread Started!
Если я прокомментирую часть l oop класса B, тогда будет запущен только каждый класс обслуживания. Не могу понять причину. Любая помощь будет оценена по достоинству.