[스레드 풀] ScheduledThreadPool 예외 처리
배경.
어떤 임무류는 추출 데이터의 논리를 정시에 처리하고 정시 스레드 탱크를 통해 실현한다.
문제.
이날 데이터가 처리되지 않은 것을 발견하고 초보적인 검사를 한 결과 스레드 탱크에 넣은 이 임무는 실행되지 않았고 다른 임무는 정상적으로 실행될 수 있었기 때문이라고 포지셔닝했다.
분석하다.
이 작업의 코드 논리를 정리하는데 그 중에서 데이터를 처리하는 과정에서 데이터에 대한 규범에 맞는 검사가 누락되었기 때문에 바로 이번 결여된 데이터 때문에 코드가 이상하게 나왔다.
자료 찾기와 데모 테스트를 통해 4ScheduledThreadPool
이 정시 스레드 탱크는 이상한 작업을 던지면 마운트되며, 이후에는 다시 호출되지 않습니다.
해결하다
작업 중 작업에 대한 규정 준수 검사 수행
불가피한 이상을 포획하여 이상이 퀘스트 밖으로 던져지지 않도록 합니다
테스트 public class ScheduledThreadPoolTest {
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("A"), 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("B");
throw new RuntimeException();
}, 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("C"), 0, 2, TimeUnit.SECONDS);
}
}
실행 결과A
B
C
A
C
A
C
...
여기에서 B 퀘스트가 이상을 던진 후 스레드 탱크가 다시 호출되지 않음을 볼 수 있습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법
원래 Turobolinks란?
Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고,
이동한 페이지를 Ajax에서 가져옵니다.
그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이날 데이터가 처리되지 않은 것을 발견하고 초보적인 검사를 한 결과 스레드 탱크에 넣은 이 임무는 실행되지 않았고 다른 임무는 정상적으로 실행될 수 있었기 때문이라고 포지셔닝했다.
분석하다.
이 작업의 코드 논리를 정리하는데 그 중에서 데이터를 처리하는 과정에서 데이터에 대한 규범에 맞는 검사가 누락되었기 때문에 바로 이번 결여된 데이터 때문에 코드가 이상하게 나왔다.
자료 찾기와 데모 테스트를 통해 4ScheduledThreadPool
이 정시 스레드 탱크는 이상한 작업을 던지면 마운트되며, 이후에는 다시 호출되지 않습니다.
해결하다
작업 중 작업에 대한 규정 준수 검사 수행
불가피한 이상을 포획하여 이상이 퀘스트 밖으로 던져지지 않도록 합니다
테스트 public class ScheduledThreadPoolTest {
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("A"), 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("B");
throw new RuntimeException();
}, 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("C"), 0, 2, TimeUnit.SECONDS);
}
}
실행 결과A
B
C
A
C
A
C
...
여기에서 B 퀘스트가 이상을 던진 후 스레드 탱크가 다시 호출되지 않음을 볼 수 있습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법
원래 Turobolinks란?
Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고,
이동한 페이지를 Ajax에서 가져옵니다.
그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
작업 중 작업에 대한 규정 준수 검사 수행
불가피한 이상을 포획하여 이상이 퀘스트 밖으로 던져지지 않도록 합니다
테스트 public class ScheduledThreadPoolTest {
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("A"), 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("B");
throw new RuntimeException();
}, 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("C"), 0, 2, TimeUnit.SECONDS);
}
}
실행 결과A
B
C
A
C
A
C
...
여기에서 B 퀘스트가 이상을 던진 후 스레드 탱크가 다시 호출되지 않음을 볼 수 있습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법
원래 Turobolinks란?
Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고,
이동한 페이지를 Ajax에서 가져옵니다.
그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
public class ScheduledThreadPoolTest {
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("A"), 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("B");
throw new RuntimeException();
}, 0, 2, TimeUnit.SECONDS);
scheduledExecutorService.scheduleAtFixedRate(() -> System.out.println("C"), 0, 2, TimeUnit.SECONDS);
}
}
A
B
C
A
C
A
C
...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.