A. 在java中如何实现较为精确的定时器
大部分人在遇到需要使用定时任务的时候首先会想到Timer类,
不过在JDK5.0之后就不建议使用这个专Timer了,因为它有很属多的缺陷。
在新的java.util.concurrent包中的ScheledExecutorService可以替代这个Timer:
使用方法举例:
Java代码
ScheledThreadPoolExecutor exec = new ScheledThreadPoolExecutor(1);
exec.scheleAtFixedRate(new Runnable() {
public void run() {
try{
throw new RuntimeException();
}catch (Exception e){
System.out.println("RuntimeException catched");
}
}
}, 1000, 5000, TimeUnit.MILLISECONDS);
B. 求高手指点一二,我需要用java编写一个定时器,每天8点开始执行,每一个小时执行一次,过了晚上12点停止
ScheledExecutorServiceservice=Executors.();
service.scheleAtFixedRate(newTimerTask(){
@Override
publicvoidrun(){
if(当前时间>8点){
dowork();//你要做的事
}
if(当前时间>12点){
this.cancel();
}
}
},0,1,TimeUnit.HOURS);
C. java中在定时器,定时每周一定时执行某个任务,必须在周一重新启动了服务,该任务就会在指定的时间点执行
最常来用的做法是使用UNIX的cron直接执行源Java程序。
并不需要在Java做的那么复杂。
Windows服务器也有类似于cron的任务管理功能,同理
--------------------------->
Tomcat不是用来管理定时任务的,如果没有HTTP请求,Servlet是不会被执行的。
建议lz把定期执行的处理做成一个独立的Java程序,用cron执行。
如果不想写独立的Java程序,也可以用cron定期向Tomcat发送Http请求,但是,这样做的话注意程序处理时间不能太长,因为HTTP通信有timeout的制约。
D. java定时线程占用服务器资源吗
会占资源,但是不会占很多。就是开一个线程的开销。它sleep的时候,会释放cpu的
E. java定时器与线程的区别
javax.swing.Timer
尽管所有 Timer 都使用来一个共享线程源(由第一个执行操作的 Timer 对象创建)执行等待,但是 Timer 的动作事件处理程序还会在其他线程(事件指派线程上)执行。这意味着 Timer 的操作处理程序可以安全地在 Swing 组件上执行操作。但是,它也意味着处理程序必须快速执行以保证 GUI 作出响应。
java.util.Timer
一种工具,线程用其安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。
简单理解,javax.swing.Timer没有增加线程,利用事件线程的间隙运行,java.util.Timer增加线程了。
F. java写一个定时器,定时对一个变量赋不同值,这个程序代码怎么写
比较复杂点的需要Quartz,引入jar包,然后再需要配置一些东西,详细参考如下。
http://..com/question/382322468.html
简单点的直接可以这样内写容
while(true){
xxx//作时间间隔判断,或者当前时间与上一执行时间间隔。
i=j;//i 是你变量,j是动态的值
}
G. java定时器用什么实现
java定时器的使用()
1、在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等。
对于这样的操作最方便、高效的实现方式就是使用java.util.Timer工具类。
private java.util.Timer timer;
timer = new Timer(true);
timer.schele(
new java.util.TimerTask() { public void run()
{ //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000);
第一个参数是要操作的方法,第二个参数是要设定延迟的时间,第三个参
数是周期的设定,每隔多长时间执行该操作。
使用这几行代码之后,Timer本身会每隔5分钟调用一遍
server.checkNewMail()方法,不需要自己启动线程。Timer本身也是多线程同
步的,多个线程可以共用一个Timer,不需要外部的同步代码。
2、
(1)Timer.schele(TimerTask task,Date time)安排在制定的时间执行指定的
任务。
(2)Timer.schele(TimerTask task,Date firstTime ,long period)安排指定
的任务在指定的时间开始进行重复的固定延迟执行.
(3)Timer.schele(TimerTask task,long delay)安排在指定延迟后执行指定的
任务.
(4)Timer.schele(TimerTask task,long delay,long period)安排指定的任务
从指定的延迟后开始进行重复的固定延迟执行.
(5)Timer.scheleAtFixedRate(TimerTask task,Date firstTime,long period)
安排指定的任务在指定的时间开始进行重复的固定速率执行.
(6)Timer.scheleAtFixedRate(TimerTask task,long delay,long period)安
排指定的任务在指定的延迟后开始进行重复的固定速率执行.
用Java Timer API 进行时间调度开发的相关注意点
java.util这个包中可以找到Timer和TimerTask这两个类。Timer直接从Object
继承,它相当于一个计时器,能够用它来指定某个时间来执行一项任务,或者
每隔一定时间间隔反复执行同一个任务。创建一个Timer后,就会生成一个线程
在背后运行,来控制任务的执行。而TimerTask就是用来实现某项任务的类,
它实现了Runnable接口,因此相当于一个线程。