《黑马程序员》 传统的定时器的创建方式总结与测试
2014-03-28 11:45
169 查看
------- 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() ); } } }
相关文章推荐
- 总结(创建快捷方式等)
- 各种进程创建方式比较总结(MacOS, Win32
- (转)创建Windows服务(Windows Services)N种方式总结
- iOS内支付总结__详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取"产品付费数量等于0的问题"】
- 正则表达式创建方式的区别及编写简单的正则方式(js学习总结)
- javascript中创建对象的方式总结
- 一种不通过UI给C4C自定义BO创建测试数据的方式
- Java并发01----传统线程中创建线程的两种方式
- 传统创建线程的两种方式
- 【java并发】传统线程技术中创建线程的两种方式
- 创建线程的两种传统的方式
- JavaScript基础——面向对象的程序设计(一)创建对象的几种方式总结
- java多线程01:创建线程的两种传统方式
- 【java并发】传统线程技术中创建线程的两种方式
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第13章节--使用业务连接服务创建业务线解决方式 总结
- (2)传统定时器技术回顾 张孝祥老师经典讲解总结
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- java多线程总结一:线程的两种创建方式及优劣比较
- Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结
- 创建线程的两种传统方式