《黑马程序员》 传统的定时器的创建方式总结与测试

------- android培训java培训、期待与您交流! ----------
public class TraditionalTimerTest {
	/**
	 * 定时器的使用
	 */
	static int count=0;
	
	public static void main(String[] args) {
		//传统的定时器的创建方式
		//第一种普通的:在指定的时间干一件事情(只干一次)
//		new Timer().schedule(new TimerTask(){
//			@Override
//			public void run() {
//				System.out.println("bombing");
//			}
//		}, 3000);
		
		//第二种:在指定的时间干了一件事情之后然后再过一段时间再干这件事情(循环执行)
//		new Timer().schedule(new TimerTask(){
//			@Override
//			public void run() {
//				System.out.println("bombing");
//			}
//		}, 10000,2000);  //10秒之后执行一下这个代码,然后以后每过2秒再执行这个代码
		
//		//我们想实现子母弹的效果,即在定时器中还有定时器:
//		new Timer().schedule(new TimerTask(){
//			@Override
//			public void run() {
//				System.out.println("bombing");
//				new Timer().schedule(this, 2000);  //我们不可以使用不同的定时器执行同一个任务 
//				//我们该如何操作了?
//				//这里使用的匿名对象,它执行完之后就被系统的GC给回收处理了。
//				//所以我们再使用的时候这个对象是不存在的。即TimerTask执行一次之后它就不存在了
//				//我们做一个类继承TimerTask。然后在TimerTask的run方法中再创建一个新的定时器
//			}
//		}, 2000);  //10秒之后执行一下这个代码,然后以后每过2秒再执行这个代码
//		//我们想实现子母弹的效果,即在定时器中还有定时器:
		
		//交替执行的操作
//		class MyTimerTask extends TimerTask{  //写一个TimerTask的子类,把任务封装在这个类里面
//			@Override
//			public void run() {
//				System.out.println("bombing");
//				//在它的这个里面再创建一个定时器
//				new Timer().schedule(new MyTimerTask(), 2000);  //然后再创建一个定时器执行相同的任务 
//			}
//		}
//		
//		new Timer().schedule(new MyTimerTask(),2000);  
		//创建一个定时器定时执行一个任务:在它干一件事情的基础再让它定时干事情
		/*26
		27
		bombing
		28
		29
		bombing*/
		
		//我们想实现这样的效果,就是让任务先毎2秒执行一下,然后再毎4秒执行一下,然后再每2秒执行一下,然后再每4秒执行一下
		class MyTimerTask extends TimerTask{  //写一个TimerTask的子类,把任务封装在这个类里面
			@Override
			public void run() {
				count=(count+1)%2;  //0+1%2=1,1+1%2=0  这样就可以实现交互执行了
				System.out.println("bombing");
				//在它的这个里面再创建一个定时器
				new Timer().schedule(new MyTimerTask(), 2000+2000*count);  //然后再创建一个定时器执行相同的任务 
			}
		}
		
		new Timer().schedule(new MyTimerTask(),2000);  
		//这样的话我们就需要计算出一个类创建对象的个数
		//我们可以使用static来做。要么就做两个定时器。然后,在A的定时器的run方法中创建一个新的定时器调用B
		//然后在B的定时器的run方法的代码中创建一个新的定时器调用A
		/**
		 *  58
			59
			bombing
			0
			1
			2
			3
			bombing
		 */
		
		//不停的打印当前的系统:秒
		while(true){
			try {
				Thread.sleep(1000);  //隔一秒打印一下秒值
			} catch (InterruptedException e) {
				e.printStackTrace();
			}//休眠100毫秒
			System.out.println(new Date().getSeconds() );
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值