모든 요청에 대해 많은 계산이 이루어집니다. 평균적으로 답장을 처리하는 데 약 10 분이 걸립니다. 이제 사용자가 새로운 요청을 보내는 경우; 이전 요청을 계속할 필요가 전혀 없습니다.이전 요청 취소
그래서 나는 그것을 실행하는 이전 스레드를 기본적으로 중단시키는 코드를 작성했습니다. 바람둥이 환경에서 좋은 연습인가요? 더 나은 해결책이있을 수 있습니까? tomcat 스레드를 인터럽트해도 괜찮습니까. 아니면 내 자신의 스레드 풀을 관리해야하고 풀에서 계산을 수행해야합니까?
추가 정보 : 는 기본적으로 모든 작업은 FutureTask에 싸여있다. 모든 요청에 대해이 타스크가 실행되고 타스크에 대한 참조가 ConcurrentHashMap에 의해 저장됩니다. 모든 요청에 대해지도의 모든 미래가 "취소됨"이어서 최신 요청을 실행합니다. 따라서 이전 요청을 취소합니다.
감사합니다. 그러나 우리 자신의 스레드 풀을 여분의 오버 헤드로 유지하는 것은 아닙니다. 모든 요청에 대해 여분의 스레드를 사용하는 곳. 둘째로 서버 용량에 어떤 영향을 줍니까? 나는 바람둥이가 요청에 따라 증가하는 수영장의 크기와 함께 CachedThreadPool을 사용한다고 생각했다. – Jatin
처음에는 코드가 별도의 풀로 작성되었습니다. 그러나 나중에 그것을 포팅했습니다. 수영장을 가지고있는 몇 가지 장점이 있습니다.sesnse에서 당신은 소유하고 임의의 스레드가 아닌 스레드를 방해하고 있습니다. 그러나 나중에 오버 헤드로 인해 이식 됨. – Jatin
서버 용량의 변화에 신경 쓰지 않아도 HTTP 스레드에서 계속 블로킹 할 수 있습니다. 어쨌든, 직업 당 10 분이라는 맥락에서 새 스레드를 만드는 것은 비용이 거의 들지 않는다고 생각합니다. 또는 정적/공유 스레드 풀을 사용하는 경우 비용은 무시할 수 있습니다. – mindas