가정하자 내가 좋아하는 자바 방법이 있습니다사전 생성 객체는
public Ouput respond(Input input) { /* .. */ }
Output
개체가 많은 분야가 있습니다 - 이러한 필드 중 일부는 Input
객체에 의존하지만, 나머지는 미리 결정된다. 가능한 한 빨리 반환하기 위해 respond()
을 호출하는 스레드를 만들고 싶습니다. 내가 다른 스레드 산란 할이 들어
Output
객체를 사전이 만들어집니다 일부 필드를 설정하고
respond()
를 실행하는 스레드가 대기열에서 선택할 수 있도록 대기열에두고, 나머지 필드 및 반환을 설정 그것.
이와 비슷한 것을 구현하는 가장 좋은 방법은 무엇입니까? 내 현재 프로토 타입은 한정된 LinkedBlockingQueue
을 사용하지만이 아이디어를 구현하는 더 좋은 방법이 있습니까?
내 목표는 최대한 빨리 respond()
방법을 얻는 것입니다. 따라서 그 목표를 충족시키는 다른 제안도 환영합니다. :-)
메소드를 최적화하는 데 도움이되도록 'Output' 클래스의 코드를 살펴야합니다. 우리가 말하는 분야가 무엇인지 아는 것이 중요합니다. (나는이 말을하기 때문에 필드의 묶음에 대한 기본값으로'Output'의 인스턴스를 만드는 것이 시간 집약적 인 프로세스가 아닙니다 ...) – delfuego
@delfuego 위의 코드를 작성했습니다; 실제 코드는 더 복잡하지만 테스트/프로파일 링은 객체 구축 오버 헤드가 중요하다는 것을 나타냅니다. 'Output' 클래스는 제 3 자 라이브러리에 있습니다.이 라이브러리는 내가 액세스 할 수없는 소스입니다. –
배열이 아닌 링크 된 이유는 무엇입니까? 나는 ArrayBlockingQueue가 LinkBlockingQueue보다 약간 더 나은 성능을 보일 것이라고 가정한다. 배열 구현에는 링크 객체를 유지 관리하는 추가 오버 헤드가 없기 때문이다. – Suppressingfire