2016-11-09 5 views
0

나는 나를 위해 어떤 작업을 수행하는 실행 가능한 클래스 A를 만들었습니다. 이 클래스를 ExecutorService를 사용하여 제출하므로 이러한 작업을 병렬로 실행할 수 있습니다.AsynFuture를 호출하는 Java의 스레드간에 객체 공유

실행 가능한 클래스 A는 AsyncFuture 요청 (future.get())을 보내는 다른 개체 B를 호출합니다.

Runnable 클래스 A의 개별 객체를 ExecutorService에 제출하지만 B 클래스의 객체가 Bean (싱글 톤)에 의해 참조되고 있습니다. 이로 인해 스레드 실행시 문제가 발생할 수 있습니까?

클래스 A의 개체 중 일부가 스레드에 의해 실행되고 있지 않은 것으로 나타났습니다.

ThreadLocal을 사용하는 것에 대해 읽었지만 여기에 해당되는지 확실하지 않습니다.

+0

일반적으로 B의 메서드를 호출 할 때 Object B singleton에 업데이트되는 속성이 없으면 Singleton 메서드 호출은 스레드로부터 안전합니다. B 급 코드를 게시 할 수 있습니까? – Zeus

+0

몇 가지 코드를 보여줄 수 있습니까? – pbajpai21

답변

1

다른 객체의 싱글 톤 Bean을 참조하면 별도의 스레드에서 발생해도 병목 현상이 발생합니다. 나를 위해 일한 유일한 해결책은 A의 초기화에서이 bean을 검색하는 것이 었습니다.