woowacourse-teams/2024-friendogly

놀이터 자동나가기 구현

Closed this issue · 0 comments

요구 사항

  • 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초후에 다음 메서드가 수행된다.