1: 정해진 시간 후에 작업을 한 번 실행: 1000밀리초 후에 작업을 실행(한 번만 실행)
2: 5000밀리초 후에 작업을 실행하고, 1000밀리초마다 다시 작업을 실행( 무한 실행)
3: 대체 재생성: 작업이 2초와 4초 동안 교대로 실행됩니다(무한 실행),
4: 두 개의 순환 교대 작업 생성: 2초 후 작업 A는 실행. 태스크 B는 태스크 A에서 생성되어 4초 후에 실행되고, 태스크 A는 태스크 B에서 생성되어 2초 후에 실행되는 식입니다.
1,2,3 코드:
import java.util.Date; import java.util.Timer; import java.util.TimerTask; /** * @author Administrator @zsw 2012-7-19 下午04:37:19 */ public class TraditionalTimer { public static void main(String[] args) { //1: // test1(); //2: // test2(); //3: test3(); //用于打印时间秒数 while (true) { System.out.println(new Date().getSeconds()); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //1:固定时间后执行一次任务:1000毫秒后执行任务(只执行一次) public static void test1() { new Timer().schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub System.out.println("bombing!"); } }, 1000); } // 2:5000毫秒后,执行任务,以后每隔1000毫秒再执行一次任务(无限执行) public static void test2() { new Timer().schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub System.out.println("bombing!"); } }, 5000, 1000); } //3:交替再生:任务2秒4秒交替的执行(无限执行), static int count = 0; public static void test3() { class MyTimerTask extends TimerTask { @Override public void run() { count = (count + 1) % 2; System.out.println("bombing!"); new Timer().schedule(new MyTimerTask(), 2000 + count * 2000); } } new Timer().schedule(new MyTimerTask(), 2000); } }
4 코드
import java.util.Date; import java.util.Timer; import java.util.TimerTask; /** * @author Administrator @zsw 2012-7-20 下午08:08:42 */ public class TraditionalTime2 { /* * 创建两个循环交替任务:2秒后,A任务执行。 * A任务里面创建一个B任务4秒后执行,B任务里面又创建一个A任务2秒后执行,,如此往复。 * */ public static void main(String[] args) { TraditionalTime2 t2=new TraditionalTime2(); new Timer().schedule(t2.new A(), 2000); //用于打印时间秒数 while (true) { System.out.println(new Date().getSeconds()); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class A extends TimerTask { @Override public void run() { System.out.println("A bombing!"); new Timer().schedule(new B(), 4000); } } class B extends TimerTask { @Override public void run() { System.out.println("B bombing!"); new Timer().schedule(new A(), 2000); } } }
더 보기 멀티스레딩 관련 글_다수의 타이머 작성 방법은 PHP 중국어 홈페이지를 주목해주세요!