정기적인 호출이 필요한 경우 스케쥴관리를 위해 Timer 클래스를 이용한다.
이를 이용하면 리눅스의 crontab 효과를 낼 수 있다.
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class UpdateSNS extends TimerTask{
private URL url = null;
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public void run(){
try{
url = new URL("*****************");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
int code = conn.getResponseCode();
conn.disconnect();
conn = null;
System.out.println(sdf.format(new Date())+" => "+code);
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception{
UpdateSNS up = new UpdateSNS();
Timer timer = new Timer();
// 20분마다 호출
timer.schedule(up, 0, 1000 * 60 * 20);
// try{
// Thread.sleep(5000);
// }catch(Exception e){
// e.printStackTrace();
// }
// timer.cancel();
}
}
스케쥴관리를 위해서 Timer 객체를 만들고 schedule() 를 호출한다.
실제로 호출될 작업은 TimerTask 를 상속받아 run() 메소드에 오버라이드 시킨다.
파라메터로는 처음 시작시간과 주기적으로 실행할 시간을 적는다.
위의 예에서는 프로그램이 시작하자마자 스케쥴이 시작되고 20분마다 재호출된다.
스케쥴을 멈추기 위해서는 cancel() 함수를 호출한다.
위에서는 멈추지 않고 계속 호출하도록 하였기 때문에 주석처리하였다.