놀이터 자동나가기 구현
Closed this issue · 0 comments
ehtjsv2 commented
요구 사항
- 2시간동안 놀이터에 들어오지 않으면 자동으로 나가게 된다.
기본적으로 스프링의 스케쥴링 스레드 1개를 사용한다.
그렇기에 스케쥴링 작업이 2개이상일 때는 병렬처리가 되지 않으므로, 스케쥴링스레드풀의 개수를 늘리는 설정을 해야한다.
사용 방법은 아래와 같다
@SpringBootApplication
@EnableScheduling
public class SchedulingTasksApplication {
@Component
public class ScheduledTasks {
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
@Scheduled(fixedRate = 5000)
public void reportCurrentTime1() throws InterruptedException {
log.info("One: The time is now {}", dateFormat.format(new Date()));
Thread.sleep(4000);
}
}
@scheduled 옵션
corn
@Scheduled(cron = "0 * * * * *")
각 자리는 초, 분, 시, 일, 월, 요일 총 6개이다.
각 자리를 *로 표기할 경우 매번 이라는 뜻이다 (ex. 매초, 매분, 매시…)
그리고 숫자를 적으면 해당 시간에 수행된다는 뜻이다
예시의 경우 “0 * * * * *”
이므로 매시간 매분 0초마다 실행된다
@Scheduled(cron = "0/2 * * * * *")
이렇게 할 경우 매시간 2로 나누어떨어지는 초 마다 실행한다는 뜻이다.
fixedRate
@Scheduled(fixedRate = 5000)
ms단위이다. 메서드 사이의 시간을 설정한다.
메서드가 시작하고 5초후에 다음 메서드를 시작한다.
fixedDealy
@Scheduled(fixedDelay = 5000)
ms단위이다. 메서드가 끝나고 다음 메서드까지의 실행전까지 시간을 설정한다.
메서드가 종료되고 5초후에 다음 메서드가 수행된다.