genericobjectpool 예제

Compartir

2/08/2019

Por

Categoría: Sin categoría

Comentarios: 0

메서드 makeObject()는 WorkerThread 개체를 만듭니다. 모든 요청에 대해 풀을 검사하여 새 개체를 만들지 아니면 기존 개체를 다시 사용할지 여부를 확인합니다. 예를 들어 특정 요청이 첫 번째 요청이고 풀이 비어 있는 경우 ObjectPool 구현은 makeObject()를 호출하고 WorkerThread를 풀에 추가합니다. 경우에 따라 데이터베이스 사용 정책으로 동시 연결 수에 제한이 적용될 수 있습니다. 또한 외부 응용 프로그램은 동시 열려 있는 연결 수를 지시하거나 제한할 수 있습니다. 대표적인 예로 는 등록자(예: BulkRegister)에 사용할 수 있는 활성 소켓 연결 수를 제한하는 도메인 레지스트리(예: Verisign)가 있습니다. 리소스 풀링은 이러한 유형의 문제를 처리하는 데 가장 적합한 옵션 중 하나로 입증되었으며, 어느 정도는 엔터프라이즈 응용 프로그램에 필요한 서비스 수준을 유지하는 데도 도움이 됩니다. 이 예제에서는 Reader의 내용을 버퍼링하는 데 사용되는 StringBuffers를 풀링한다고 가정해 보겠습니다. (StringBuffers 풀은 실제로 유용할 수도 있으며 그렇지 않을 수도 있습니다. 여기서는 간단한 예제로 사용하고 있습니다. 예를 들어, GenericObjectPool과 함께 이 팩토리를 사용하여 다음과 같이 ReaderUtil을 인스턴스화할 수 있습니다. 다행히도 다양한 오픈 소스 개체 풀링 프레임워크를 사용할 수 있으므로 휠을 다시 발견할 필요가 없습니다.

개체 풀은 이 용도로 사용됩니다. 기본적으로 개체 풀은 저장된 개체를 동적으로 사용하고 다시 사용할 수 있도록 이러한 개체를 저장할 수 있는 저장소로 시각화할 수 있습니다. 또한 개체 풀은 풀된 개체의 수명 주기를 제어합니다. 구현 하기 전에 개체 풀 패턴에 대 한 몇 가지 요구 사항을 정의 해야: 모든 개체를 유지 하려면 BlockingQueue 개체를 사용 합니다. 이렇게 하면 개체에 액세스할 수 있는 경우에만 개체가 배달되고 그렇지 않으면 개체에 액세스할 수 있을 때까지 기다립니다. 최대 성능과 처리량을 달성하기 위해 위의 매개 변수에 대해 최적의 값을 제공해야 합니다. 사용 패턴은 응용 프로그램마다 다르므로 매개 변수의 조합이 다른 풀을 조정하여 최적의 솔루션에 도달합니다. 이 모든 것을 사용하여 DBCP 라이브러리는 JDBC 드라이버를 래핑하는 DBCP 드라이버를 통해 액세스할 수 있는 최적의 풀을 만들 수 있습니다.

다음은 위에서 사용한 대로 StringBuffers를 만드는 풀이드오브젝트팩토리 구현입니다.