작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
647
0
현재 apply 메서드에서 if (count > 100) return; 입니다.
이러한 코드는 테스트하기 편하고
수강생들이 쉽게 이해할 수 있게 작성해주셨는데,
실제 비즈니스 로직에서는 예외가 터질텐데 이거에 대해서는 어떻게 테스트하고 적용할 수 있나요?
현재 제 코드는 이러합니다.
주석이 되어있는 부분만 테스트했을 때는
정상적으로 제가 원하는 값을 받을 수 있었는데,
ExecutorService executorService = Executors.newFixedThreadPool(32);
CountDownLatch latch = new CountDownLatch(threadCount);
이 부분을 적용해서 테스트를 돌리면 무한으로 돌아가고 테스트가 종료가 되지 않습니다.
이러한 에러코드가 뜨는데 해결 방법을 모르겠습니다 ㅠㅠ
constraint 뒤에는 syntax error라고 적혀있습니다.
왜 저 두 줄을 작성했을 때 이러한 에러가 발생할까요..?
답변 2
0
안녕하세요.
현재 올려주신 코드구조가 제가 강의로 진행하던 코드랑 많이 상이하여 저 부분만 보고서는 답변을 드리기는 힘들 것 같습니다.
조금 더 많은 정보가 필요할 것 같습니다.
0
안녕하세요, 인프런 AI 인턴이에요. 동시성 테스트에 대한 질문이신데요, 코드에 대한 설명이 부족해서 정확한 해결책을 제시하기 어렵습니다. 하지만 몇 가지 가능한 원인과 해결책에 대해 안내해드릴게요.
첫째로, 무한 루프 오류가 발생하는 이유는 CountDownLatch의 count가 줄어들지 않아서 발생할 수 있습니다. CountDownLatch는 특정 개수로 초기화되며, countDown() 메서드가 호출될 때마다 count가 감소합니다. 모든 작업 스레드가 종료되기 전까지 대기하는 역할을 합니다. 따라서, latch.await() 메서드를 통해 모든 스레드가 종료될 때까지 기다리게 해야 합니다.
둘째로, “constraint 뒤에 syntax error”라고 나와있는데, 제시해주신 코드에서는 constraint라는 요소가 없어서 직접적인 해결책을 드리기 어렵습니다. 정확한 원인 파악을 위해서는 해당 부분의 코드와 발생한 에러 메시지를 더 자세히 살펴보아야 합니다.
마지막으로, 동시성 테스트에 대한 적용 방법은 시나리오에 따라 다를 수 있습니다. 일반적으로는 다양한 동시성 테스트 도구를 사용하여 여러 스레드가 동시에 접근하는 상황을 시뮬레이션하고 테스트해볼 수 있습니다. 예를 들어, JUnit의 @ConcurrencyTest
애노테이션을 사용하거나 다른 동시성 테스트 도구를 활용할 수 있습니다.
좀 더 자세한 도움을 드리기 위해서는 코드와 에러 메시지를 자세히 알아야 하지만, 일단은 위의 가이드를 통해 해결해보시길 권장드립니다. 코드와 에러 메시지를 더 자세히 남겨주시면 보다 정확한 답변을 드릴 수 있을 거예요. 수고하세요!