버퍼를 사용하여 스레드간에 객체를 전달하는 Java 응용 프로그램을 사용하고 있습니다. 일반적으로 BufferUtils를 사용하여 이러한 버퍼를 동기화합니다. 버퍼에 객체를 추가하는 단 하나의 스레드 만 있고 버퍼에서 객체를 제거하는 단 하나의 다른 스레드 만 제거하면됩니다. 그들 사이의 버퍼가 동기화되어야합니까?하나의 스레드 만 추가하고 하나의 (다른) 스레드 만 제거하는 경우 버퍼를 동기화해야합니까?
문제의 두 스레드가 스프링 빈에서 인스턴스화되고 두 버퍼가 참조하는 버퍼에 대해 세 번째 빈을 갖는 경우에만 공유 버퍼를 사용할 수있는 경우가 있습니다. 나는 빈에서 동기화 된 버퍼를 만드는 방법을 알아 내지 못했고, 따라서 그것이 필요한지 아닌지에 관한 질문을 던졌다.
이 내가 필요 정확히 무엇을했다, 감사합니다. 게다가, 그것은 객체를 추가하는 타임 아웃을위한 아주 좋은 메소드를 가지고 있습니다. BufferOverflow를 잡는 대신에 add에 부울 리턴이 있습니다. 정말 좋은, 감사합니다! – tdimmig
이것은 거의 두 번째 질문이지만 완전히 새로운 소식을 올릴 가치가 없습니다. 성능면에서 BlockingQueue가 BufferUtils와 동기화 된 버퍼와 어떻게 비교되는지 알고 있습니까? – tdimmig
(아주) 늦게 답장을 드려 죄송합니다. 확실히 알기 위해서는 몇 가지 테스트를 실행해야합니다. BlingQueue 변종은 잘 쓰여지고 효율적이라는 믿음이 있습니다. Java 5에서 추가 된 동시 패키지의 일부입니다. 잘못 입력하지 않은 경우입니다. 그러나 결국, 당신이 사용하는 방법이 당신에게 어울리는 지 알아보기 위해 몇 가지 검사를 실시하고 측정을해야합니다. 사용 가능한 클래스를보고 Array 백 또는 LinkedList 백 큐에서 선택할 수 있습니다. 자세한 내용은 위의 문서를 참조하십시오. 건배, 티 베리 우 –