2017-12-08 25 views
-3

모든 코어에 예정되고 낙담한다. 그러나 잠금의 경합은 생산자 스레드 사이에서만 발생하며 소비자와 생산자 스레드 간에는 발생하지 않습니다. 여전히 응용 프로그램은 모든 스레드가 단일 코어 (모든 서버 OS가 아닌 Windows 10 OS)에서 예약되어 최대 50 %의 CPU 사용률로 작동합니다. 그것은 소비자 스레드가 슬라이스를 기다리고있는 직렬 프로세스처럼 거의 작동합니다.자바에 고정하는 핵심 선호도를 생성 않고 방해합니다/스레드가 내가 스레드 간의 상호 작용을 촉진하는 생산자 - 소비자 패턴을 구현 한

(모든 것이 웹 응용 프로그램의 단일 파일에 기록되기 때문에) thread-safe 로깅을 병목 현상이 될 수 있습니까??

내 의도는이어야 소비자 스레드가 생산자 스레드 병렬 수 GET 슬라이스해야한다. 테스트 할 때

+1

우리는 가능한 코드를 보지 않고이 질문에 대답 할 수 없다. 문제를 나타내는 [mcve]를 만드십시오. 이 사이트를 사용하는 방법을 배우려면 [help]를 방문하고 [ask]를 읽으십시오. –

+0

코드를 추가하면 downvote가 제거됩니까? (현재 회사의 IP 임에도 불구하고)? stackoverflow 코드 스 니펫없이 비슷한 질문을 보았다. –

+0

회사의 IP 인 경우 문제를 보여주는 독립형 [mcve]를 만들어야합니다. 사실, [mcve]를 만드는 시간을 내면 아마 스스로 문제를 풀고 그 과정에서 무언가를 배울 수 있습니다. 이것이 왜 [mcve]를 만드는 것이 좋은 아이디어인가하는 이유입니다. –

답변

0

왜 추측? 정답은 로거를 변경하여 파일 또는 캐시 된 자원을 다룰 필요가 없도록하거나 ThreadLocal을 사용하여 로거를 분리하고 프로그램을 재실행하고 결과를 직접 분석하는 것입니다.

+0

건설적인 답장을 보내 주셔서 감사합니다. 문제는 이미 한 달 전에 기술 담당자에게 제안한 것입니다. 이어야 내가 (대신 내 현재 워크 스테이션 창) 금요일, 오늘의 코드를 배포 할 예정입니다에 리눅스 VM을했고, 그 긴 실행 테스트 한편 .IN 개틀링 (성능 테스트를위한 스칼라 기반 도구)와 성능 테스트를 내 소비자 스레드에 대한 별도의 로그 파일을 만듭니다. 저는 계약 된 개발자입니다. 아직 승인되지 않은 접근 방식에 시간을 할애하고 있다면, 나는 강력한 기반을 가질 필요가 있습니다. –