스프링부트 멀티쓰레드 작업시, 전역적으로 객체를 사용할 경우
ConcurrentHashMap 이용!!!
@Configuration
public class ConcurrentConfig {
public ConcurrentHashMap<String, SocketChannel> globalQtsocketMap = new ConcurrentHashMap<>(); //이 필드도 객체이므로 new로 인스턴스를 띄워줘야 된다.
//ConcurrentHashMap 은 multiThreadSafe
}
다른 스레드에서
@RequiredArgsConstructor
@Service
public class JsonParseService {
private static final Logger logger = LoggerFactory.getLogger(JsonParseService.class);
private final ConcurrentConfig concurrentConfig;
---위에서 DI-----
SocketChannel schn = new SocketChannel();
원하는 소켓 객체를 넣어주고.
concurrentConfig.globalQtsocketMap.put("mySchn", schn);
또 다른 스레드에서 그 객체를
@RequiredArgsConstructor
@Service
public class JsonParseService {
private static final Logger logger = LoggerFactory.getLogger(JsonParseService.class);
private final ConcurrentConfig concurrentConfig;
//위에서 DI
SocketChannel channel = concurrentConfig.globalQtsocketMap.get("mySchn"); / 가져온다.
Author And Source
이 문제에 관하여(스프링부트 멀티쓰레드 작업시, 전역적으로 객체를 사용할 경우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@stella6767/스프링부트-멀티쓰레드-작업시-전역적으로-객체를-사용할-경우저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)