[Java / Kotlin] n초마다 특정 작업 수행하기

neoneoneo·2024년 3월 13일
0

kotlin

목록 보기
32/49

사전 지식

Timer

  • 일정한 간격으로 작업을 스케쥴링하거나 특정 시간 후에 작업을 시작할 수 있도록 도와주는 클래스이다.
  • 백그라운드 스레드에서 작업을 수행한다.
  • 메인 스레드가 sleep 상태에 있어도 계속 실행된다.

TimerTask

  • Timer에 의해 스케쥴링되는 작업을 나타내는 추상 클래스이다.
  • TimerTask를 상속받아서 run 메소드를 구현하면된다.

위 두 개 클래스는 java.util 라이브러리를 사용하기 때문에, Java에서의 사용과 동일하다.

n초마다 특정 작업 수행하기

import java.util.Timer
import java.util.TimerTask
fun main() {
    val timer = Timer()
    timer.scheduleAtFixedRate(object : TimerTask() {
        override fun run() {
            // 5초마다 수행할 작업을 여기에 작성
            println("작업 수행 시각: ${System.currentTimeMillis()}")
        }
    }, 0, 5000)
}
  • java.util 패키지의 Timer, TimerTask 클래스를 가져온다.
  • Timer()로 객체를 생성한다.
  • scheduleAtFixedRate 메소드를 호출하여 주기적인 작업을 스케쥴링한다.
    • TimerTask 객체를 사용한다.
    • object : TimerTask() {...} 는 익명의 클래스를 만들어 TimerTask의 인스턴스를 생성하는 부분이다.
    • 두 번째 매개변수는 초기 지연 시간, 세 번째 매개변수는 주기를 작성하는 부분이다.
  • TimerTask의 run 메소드를 오버라이드한다.
    • 그 안에 주기적으로 실행할 구체적인 작업을 작성한다.

프로젝트에 녹이기

	var restWating = 0
    val timerWating = Timer()
    timerWating.scheduleAtFixedRate(object : TimerTask() {
        override fun run() {
            restWating = Random.nextInt(11)
        }
    }, 0, 5000)
  • 현재 콘솔창에서 실행 할 수 있는 식당 주문 프로그램을 구현 중에 있다.
  • 랜덤으로 주문 대기 수를 5초마다 갱신해주는 기능을 넣었는데, 이 부분에 적용하였다.

[TIL-240313]

0개의 댓글