난 그냥 내 실행 가능한의 run()
방법이 코드를 작성 : 당신이 볼 수 있듯이 작업은 DB 연결을 얻을 수없는 경우문제가 발생해도 재 시행을 원한다면 동일한 Executor로 Runnable을 re-enqueue하는 것이 안전합니까?
try {
dbConnection = MyApp.datasource.getConnection();
} catch (SQLException e) {
logger.log(Level.SEVERE, "Could not obtain a DB connection! Re-enqueuing this task. Message: " + e.getMessage(), e);
MyApp.executor.execute(this);
return;
}
것은, 그것이 있었다 같은 큐에 자체-대기열을 다시한다 그것이 달리기 전에.
나는 이것이 라고 생각하고 있습니다.은 안전하지만 재밌는 느낌이 들며, 제가 놓친 부분이 없도록하고 싶습니다.
감사합니다.
re-enqueuing 전에'Thread.sleep()'를 추가하고 싶을 수도 있습니다. 그렇지 않으면 getConnection()이 빨리 실패하면 많은 CPU로드 (및 로깅으로 인해 아마도 I/O로드)가 생성됩니다. –