1

ThreadPoolExecutor에는 몇 개의 코어와 특정 최대 스레드 수를 실행합니다. 실행되는 작업은 각 스레드에 대해 HornetQ (독립 실행 형) 연결을 만들고 스레드가 실행되는 동안 해당 스레드를 활성 상태로 유지합니다. 그러나 스레드 keepAliveTime이 만료되고 스레드가 종료되면 닫을 수 없습니다. 스레드가 죽기 직전에 리소스를 정리하는 방법이 있습니까?ThreadPoolExecutor는 스레드가 죽을 때 정리합니다.

이 중 하나는 HornetQ 연결에 풀링 솔루션을 사용하는 것입니다.

모든 의견을 보내 주시면 감사하겠습니다.

+0

호출됩니다 시도 (문 = statement.open()) {} 및 자동 닫혀를 사용해야합니다 : "그러나, 우리는 때를 닫을 수 없습니다 스레드 keepAliveTime "... 그게 무슨 뜻이야. 나는 당신에게 대답하려고했지만 질문을 이해할 수 없었다. 나는 HornetQ의 프로젝트 책임자 다. 나는 당신에게 대답하려고 노력할 것이다. –

+0

나는 Genti와 함께 일합니다. 우리는 스레드가 유휴 상태로 죽을 때 HornetQ 연결을 자동으로 닫는 방법 (가능한 경우)을 파악하려고합니다. 스레드가 활성화되어있는 동안 각 스레드에서 HornetQ에 대한 연결을 열린 상태로 유지하는 것이 좋습니다. 현재, 로그에서 HornetQ 연결이 열린 상태로 남아 있다는 경고가 표시됩니다. 나쁘지는 않지만 로그를 스팸하지 않는 것이 좋습니다. –

+0

HornetQ 독립 실행 형을위한 풀링 솔루션 (연결 및 세션)을 구현할 수 있다면 좋을 것입니다. 메시지를 보낸 후에 연결 및 세션을 풀로 반환하고 풀에서 걱정할 수 있습니다. –

답변

0

JDK 1.7을 사용하는 경우 닫을 수있는 인터페이스에 항목을 포함시킬 수 있으며 범위를 벗어나면 즉시 닫을 수 있습니다. 우리는 JMS 2에서이를 구현하기 위해 노력하고 있지만 한편으로는 자신 만의 클래스 위임 물건을 임베드 할 수 있습니다. 쓰레드가 어딘가에 참조 된 것을 유지해야하므로 쓰레드가 사라지면 범위를 벗어날 것입니다. (아마도 현지 스레드?)

당신이 조금 모호

+0

귀하의 의견을 토대로 그 제안을하고 있습니다. 도움이 될지 잘 모르겠습니다. 나는 당신에게 약간의 정보를 제공하기 위해 최선을 다하고 있습니다. 그래도 도움이되지 않으면 커뮤니케이션을 계속 열어 두십시오. 계속 생각하겠습니다. –

+0

좋은 지적이지만 현재 JDK 1.6.0_21-b07을 사용하고 있습니다. 우리 회사는 JDK 1.7로 업그레이드 할 계획이므로 제안이 가능합니다. 우리가 JDK 1.6 솔루션이 필요한지 결정하기 위해 Genti에 맡깁니다. –

+0

우리는 실제로 ThreadLocal을 사용하고 있지만 Mark가 언급했듯이 우리는 여전히 1.6에 있습니다. 우리는 1.7로 업그레이드하자마자 다시이 문제를 해결할 수 있습니다. HornetQ 독립 실행 형 풀링 솔루션을 찾을 수는 없지만 조금 놀랍습니다. JBoss 구현에서만 사용할 수 있습니다. 그래서 나는 다른 방향으로 가고 스레드가 종료되기 전에 정리할 방법이 있는지 알아 내려고했습니다. –