데이터베이스에서 읽고 파일에 결과를 쓰는 직렬 프로그램을 수정하려고합니다. 블로킹 방식으로 메모리 버퍼가 있고 비동기 적으로 "백그라운드"로 쓰여지는 파일을 성능 향상을 얻을 수 있다고 생각합니다.유사점 및 차이점 Java에서 비동기 파일 작성을위한 PipedOutputStream/PipedInputStream (또는 Reader/Writer) 및 BlockingQueue
"인터뷰"솔루션은 스레드, 공유 리소스, 동기화 된 블록 등 ... 하지만 더 좋은 방법이 있다고 확신합니다 (거기에 멋진 "지연된 쓰기"라이브러리가 있습니다. 나를 위해 그것을 수행 할 것입니까?)
java.util.concurrent
패키지는 어떤 도움을 제공합니까? java.nio
? 또는 아마 JMS/ActiveMQ?
내 버퍼에 대한 기초로 PipedOutputStream
/PipedInputStream
은 어떨까요?
지연/백그라운드/버퍼링/비 차단/비동기 파일 작성기를 Java로 구현하려면 어떻게해야합니까?
편집 :
제안을 바탕으로, 여기에 더 집중하게하려는 시도이다 (나는이 답변의 의견과 투표에 따라 여전히 관련이 생각하는)이 질문은 폐쇄 것을 방지 할 수 있습니다. 사이의 실제적인 차이가 무엇
- (나는 아주 좋은 사람이 있기 때문에 답변이 여전히 문맥에 남아 있도록 위의 원래의 질문을 유지하고있어)
PipedOutputStream
/PipedInputStream
(또는PipedReader
/PipedWriter
) 및BlockingQueue
- 비동기 파일 쓰기에 후자를 사용하는 것이 바람직합니까? (또는 내가 이유를 알고 싶습니다, 오렌지 비교에 만일 그렇다면이 사과입니까?) 당신은 아마합니다 (생산자 (데이터베이스 리더)와 소비자 사이의 경계 블록 큐를 사용하려면
귀하의 게시물은 토론 주제가 아닌 주제에 관한 주제가 아닙니다. 몇 가지 제안을 시도한 다음 구체적인 질문을 게시하십시오. –
나는 토론에 관심이있다. 나는이 주제에 대해 주제를 벗어났다는 것을 존경하지만, 주제에 관한 질문을 다시하는 것을 용서해 준다. 특정 프로그래밍 문제에 대해 그렇게 할 필요가없는 많은 사람들이 있다고 확신합니다. (누군가 99 % 전에 그것을 물어 본) 코드를 알아낼 것입니다. 그러나 "그것을 수행하는 방법이 백만 가지가 아닙니다. 무엇이 가장 좋은 연습 방법 "입니다, 이것은 내가 바라는 진짜 동료 의견입니다. http://programmers.stackexchange.com의 약자입니다. 내 질문을 저기로 옮겨야 하나? 나는 바로 일을하고 싶고, 올바른 일을하고 싶다. –
글쎄,이 질문은 친절하다. – keuleJ