여러 스레드가 List
로그에 쓸 수있는 로깅을 구현하고 있습니다. 마지막 스레드는 List
의 내용을 파일에 써야합니다. 따라서 마지막으로 List
에 쓰는 스레드는 List
을 파일로 플러시해야합니다. 가장 좋은 방법은 무엇입니까?여러 스레드가 도착했습니다. 마지막으로 처리해야합니다.
List
나는 여러 작성자와 하나의 판독기에 효율적인 동시 클래스 중 하나만 있으면됩니다.
여러 스레드가 List
로그에 쓸 수있는 로깅을 구현하고 있습니다. 마지막 스레드는 List
의 내용을 파일에 써야합니다. 따라서 마지막으로 List
에 쓰는 스레드는 List
을 파일로 플러시해야합니다. 가장 좋은 방법은 무엇입니까?여러 스레드가 도착했습니다. 마지막으로 처리해야합니다.
List
나는 여러 작성자와 하나의 판독기에 효율적인 동시 클래스 중 하나만 있으면됩니다.
내 솔루션 :
원하는 경우 주 목록의 파일에 목록을 저장하십시오.
또는
CountDownLatch
의 사용에 포스트 아래에참조 :
How is CountDownLatch used in Java Multithreading?
자바에서 사용할 수있는 유일한 동시 목록 모음입니다 : CopyOnWriteArrayList
ArrayList의 thread 세이프 인 변수에 기본 배열의 새로운 복사본을 만들어 모든 변경 작업 (추가, 설정 등)이 구현됩니다. 내 경우
간단한 해결책은 Closeable
을 구현하고 close
방법으로 세척을 할 수 있었다.
귀하의 질문에 답하기에는 너무 특이하지 않습니다. 예를 들어 스레드가 마지막 스레드임을 스레드가 어떻게 알 수 있습니까? –
@ RolfSchäuble 그건 문제의 일부입니다. 스레드는 파일에 쓰려고 시도해야합니다. 후속 스레드는 동일하게 수행해야하지만 이미 쓰여진 내용을 파일에 쓰지 않아야합니다. 논리는 다음과 같습니다. 다른 스레드가 대기 중이 아닌 경우 작성하십시오. 이 경우 큐의 마지막 스레드가 작성해야합니다. – Roland
@Roland 왜 각 스레드가 파일에 데이터를 쓰거나 인터리브 쓰기를 피하기 위해 파일 액세스를 동기화하지 않을까요? 그럴 수 없다면 시나리오에 대한 자세한 내용이 도움이 될 것입니다. 여전히 매우 모호합니다. –