A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 鲁柯 于 2013-1-25 15:47 编辑


      随着张老师Java多线程与线程并发库高级应用教程的讲解进度所做的笔记,感觉很有用,觉得很有保存价值,今天来上网了就贴上来,需要的朋友免费拿去,不需要可以随意路过,希望能快快赚够分数开始下一步计划,时间紧迫啊~
      给个预览页面吧,直接从Word中复制过来发帖的,页面显示可能会很乱或不正常,需要的朋友可以下载源文件查看。提供原始文件下载 张孝祥_Java多线程与并发库高级应用.rar (127.09 KB, 下载次数: 408)


下边复制一些吧,显示错位的话不要怪我啊,就不重新排了,可以下载原文档

还有字数限制,没法了 都删了吧
02. 传统定时器技术回顾
传统定时器的创建:直接使用定时器类Timer
a、过多长时间后炸
new Timer().schedule(TimerTask定时任务, Date time定的时间);
b、过多长时间后炸,以后每隔多少时间再炸
new Timer().schedule(TimerTask定时任务, Long延迟(第一次执行)时间, Long间隔时间);
TimerTaskRunnable类似,有一个run方法
Timer是定时器对象,到时间后会触发炸弹(TimerTask)对象
示例:
new Timer().schedule(
new TimerTask()定时执行的任务
{
       public void run()
       {
       SOP(“bombing”);
}
显示计时信息
while (true)
{
       SOP(new Date().getSeconds());
       Thread.sleep(1000);
}
}
10    定好的延迟时间,10秒以后执行任务
);
问题:2秒后炸,爆炸后每隔3秒再炸一次
定时器2秒后炸,炸弹里还有定时器(每3秒炸一次)
class MyTimerTask extends TimerTask         这就是准备用的子母弹
{
       public void run()
       {
              本身就是一颗炸弹
              SOP(bombing);
              内部子弹
              new Timer().schedule(
new MyTimerTask(), 2000
);
       }
}
       放置子母弹,2秒后引爆
       new Timer().schedule(new MyTimerTask(), 2000);
问题延伸:
       上面的问题延伸,母弹炸过后,子弹每隔3秒炸一次,再每隔8秒炸一次
       1、在MyTimerTask内部定义一个静态变量记录炸弹号,在run方法内将炸弹号加1,每次产生新炸弹,号码就会加1,根据炸弹号判断是3秒炸还是8秒炸。
       注意:内部类中不能声明静态变量
       定义一个静态变量private static count = 0;
       run方法内部:count=count+1%2
       将定时器的时间设置为:2000+2000*count
       2、用两个炸弹来完成,A炸弹炸完后启动定时器安装B炸弹,B炸弹炸完后也启动一个定时器安装A炸弹。
定时器还可以设置具体时间,如某年某月某日某时……可以设置周一到周五做某事,自己设置的话需要换算日期时间,可以使用开源工具quartz来完成。

5 个回复

倒序浏览
{:soso_e200:}还有炸弹?
回复 使用道具 举报
好像不错哦,视频有吗,在哪里下载
回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
不错,不错!!!
回复 使用道具 举报
梁俊 发表于 2013-1-25 16:09
好像不错哦,视频有吗,在哪里下载

下载地址:http://edu.csdn.net/news/2012821/f7dc526bd099.shtml
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马