黑马程序员技术交流社区
标题:
线程任务调度分析 求指点和补充
[打印本页]
作者:
施大勇
时间:
2013-9-14 16:24
标题:
线程任务调度分析 求指点和补充
本帖最后由 施大勇 于 2013-9-28 15:38 编辑
package timerTesk;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class TeskTest {
//1.3之后的功能。定时调度。
public static void main(String[] args) {
//用TimerTask类定义一个定时任务,此类是Runnable接口的子类,必须重写void()方法。
/*TimerTask task=new TimerTask(){
public void run(){
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dateNow=new Date();
System.out.println(df.format(dateNow));
}
};*/
//定义一个计时器,通过Tiemr类来定义,调用此类的构造方法时启动一个定时器。
/*Timer timer=new Timer();
timer.schedule(task, 1000, 5000);*/ //1秒后执行,以后间隔5秒周期执行。
/*schedule()有很多重载方法,分别对应着不同的定时调度方式,同时还有
* public void scheduleAtFixedRate(TimerTask task,Date firstTime,long period)指定某一个时间点后周期执行。
* public void scheduleAtFixedRate(TimerTask task,long delay,long period)指定一段时间后周期执行。
*/
//1.5之后出现的线程池,将线程的定时与任务封装成为一个对象,这个对象中提供了任务的调度方法
ScheduledExecutorService timer1 = Executors.newScheduledThreadPool(1);
timer1.scheduleAtFixedRate(
new Runnable(){
public void run(){
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dateNow=new Date();
System.out.println(df.format(dateNow));
}
},
5,
5,
TimeUnit.SECONDS);
//从上面可以看出,这两种形式都完成了同样的功能,只不过第二种方式最后一个参数可以设置时间的单位。
//而下面的代码我们可以看到主要是用于提交任务,即ExecutorService主要用于提交,但它不会自己执行,需要有程序调用它才执行。
//同时它有多种提交方式,可以提交一组任务。方法:invokeAny(),invokeAll();护展了Executor只能提交一个任务的execute()方法。
ExecutorService pool = Executors.newSingleThreadExecutor();//线程池,产生一组线程 。
pool.execute(new Runnable(){//线程池取了一个线程,方法中的内部类。
public void run(){
}
});
}
}
以上代码是我自己的一点看法,有不对的地方请各位大侠指点,并求各位有深入理解的能够补充说明,在这里多多交流.
复制代码
作者:
黄文伯
时间:
2013-9-14 19:59
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2