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

来源:互联网 发布:ip网络广播 编辑:程序博客网 时间:2024/05/16 10:57
------- 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);  //创建一个定时器定时执行一个任务:在它干一件事情的基础再让它定时干事情/*2627bombing2829bombing*///我们想实现这样的效果,就是让任务先毎2秒执行一下,然后再毎4秒执行一下,然后再每2秒执行一下,然后再每4秒执行一下class MyTimerTask extends TimerTask{  //写一个TimerTask的子类,把任务封装在这个类里面@Overridepublic 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/** *  5859bombing0123bombing *///不停的打印当前的系统:秒while(true){try {Thread.sleep(1000);  //隔一秒打印一下秒值} catch (InterruptedException e) {e.printStackTrace();}//休眠100毫秒System.out.println(new Date().getSeconds() );}}}


0 0