当前位置:首页 » 编程语言 » javaschedule

javaschedule

发布时间: 2022-07-24 21:20:21

java scheler指的是什么

首先
class A extends TimerTask
A要实现run方法
其次
java.util.Timer timer=new java.util.Timer();
A a=new A();
timer.schele(a, 0, 1000);
0是延迟多少时间触发
1000是这个schele的时间间隔
这里时间单位都是毫秒
这样的话就是1秒执行一次a.run()

⑵ Java中Timer类的schele方法开始计时时间是不是创建timer对象的时刻

通过查看JDK源码可以知道如下:
public
void
schele(TimerTask
task,
long
delay)
{
if
(delay
<
0)
throw
new
IllegalArgumentException("Negative
delay.");
sched(task,
System.currentTimeMillis()+delay,
0);
}
实际上调用的是如下方法:
private
void
sched(TimerTask
task,
long
time,
long
period)
//task:安排的任务,the
scheled
task;
//time:指定的时间去执行
*
at
the
specified
time
with
the
specified
period,
in
milliseconds.
//period:如果period是正数,则会重复执行任务,如果是零则只执行任务一次
If
period
is
*
positive,
the
task
is
scheled
for
repeated
execution;
*
zero,
the
task
is
scheled
for
one-time
execution.
因此可以分析到
中间书写的语句不会算在延迟时间中,程序的开始时刻就是执行到timer.schele(new
Task(),1000);//语句时,开始计时。而Timer
timer
=
new
Timer()
只是创建了一个Timer类对象。
只有程序执行到timer.schele(new
Task(),1000)时,才会调用
sched(task,
System.currentTimeMillis()+delay,
0)方法,而这时该方法
才去执行System.currentTimeMillis取得当前时间,并将该任务加到TaskQueue队列中
(自带任务队列),经过System.currentTimeMillis+1000毫秒后根据指定状态执行指定任务.

⑶ java schele如何实现每月执行一次

linux系统下用cron可以实现每月执行一次某程序。

⑷ Java有没有办法做精确的Job Schele

java中设置定时任务用Timer类可以实现。
一、延时执行
首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行。代码如下:
package test;
import java.util.Timer;
public class TimeTask {
public static void main(String[] args){
Timer timer = new Timer();
timer.schele(new Task(), 60 * 1000);
}
}
解释一下上面的代码。
上面的代码实现了这样一个功能,当TimeTask程序启动以后,过一分钟后执行某项任务。很简单吧:先new一个Timer对象,然后调用它的schele方法,这个方法有四个重载的方法,这里我们用其中一个,
public void schele(TimerTask task,long delay)
首先,第一个参数
第一个参数就是我们要执行的任务。
这是一个TimerTask对象,确切点说是一个实现TimerTask的类的对象,因为TimerTask是个抽象类。上面的代码里面,Task就是我们自己定义的实现了TimerTask的类,因为是在同一个包里面,所以没有显性的import进来。Task类的代码如下
package test;
import java.util.TimerTask;
public class Task extends TimerTask {
public void run(){
System.out.println("定时任务执行");
}
}
我们的Task必须实现TimerTask的方法run,要执行的任务就在这个run方法里面,这里,我们只让它往控制台打一行字。
第二个参数
第二个参数是一个long型的值。这是延迟的时间,就是从程序开始以后,再过多少时间来执行定时任务。这个long型的值是毫秒数,所以前面我们的程序里面,过一分钟后执行用的参数值就是 60 * 1000。
二、循环执行
设置定时任务的时候,往往我们需要重复的执行这样任务,每隔一段时间执行一次,而上面的方法是只执行一次的,这样就用到了schele方法的是另一个重载函数
public void schele(TimerTask task,long delay,long period)
前两个参数就不用说什么了,最后一个参数就是间隔的时间,又是个long型的毫秒数(看来java里涉及到时间的,跟这个long是脱不了干系了),比如我们希望上面的任务从第一次执行后,每个一分钟执行一次,第三个参数值赋60 * 1000就ok了。
三、指定执行时间
既然号称是定时任务,我们肯定希望由我们来指定任务指定的时间,显然上面的方法就不中用了,因为我们不知道程序什么时间开始运行,就没办法确定需要延时多少。没关系,schele四个重载的方法还没用完呢。用下面这个就OK了:
public void schele(TimerTask task,Date time)
比如,我们希望定时任务2006年7月2日0时0分执行,只要给第二个参数传一个时间设置为2006年7月2日0时0分的Date对象就可以了。
有一种情况是,可能我们的程序启动的时候,已经是2006年7月3日了,这样的话,程序一启动,定时任务就开始执行了。
schele最后一个重载的方法是
public void schele(TimerTask task,Date firstTime,long period)

⑸ 简单理解java中timer的schele和scheleAtFixedRate方法的区别

根据你设定的时间,如果当前时间超过你的设定时间,schele会立即执行一次,并按间隔到下次执行,而之前你设定时间到当前时间可能会有多次,不会执行;scheleAtFixedRate相反,它会把之前没执行的都执行一次。

⑹ Java-java怎么再次设置Timer的schele

需要先将Time
cancel掉,再重建一个Time执行。例如:
public
class
TimerTest
{
public
static
void
main(String[]
args){
Timer
timer
=
new
Timer();
timer.schele(new
MyTask(),
1000,
2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了
try
{
int
ch
=
System.in.read();
if(ch-'c'==0){
timer.cancel();//使用这个方法退出任务
}
}
catch
(IOException
e)
{
e.printStackTrace();
}
}
}
static
class
MyTask
extends
java.util.TimerTask{
@Override
public
void
run()
{
//
TODO
Auto-generated
method
stub
System.out.println("________");
}
}
}

⑺ java 怎么写定时任务

如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务。

一、原理

JDK中,定时器任务的执行需要两个基本的类:
java.util.Timer;
java.util.TimerTask;

要运行一个定时任务,最基本的步骤如下:
1、建立一个要执行的任务TimerTask。
2、创建一个Timer实例,通过Timer提供的schele()方法,将 TimerTask加入到定时器Timer中,同时设置执行的规则即可。

当程序执行了Timer初始化代码后,Timer定时任务就会按照设置去执行。

Timer中的schele()方法是有多种重载格式的,以适应不同的情况。该方法的格式如下:
void schele(TimerTask task, Date time)
安排在指定的时间执行指定的任务。
void schele(TimerTask task, Date firstTime, long period)
安排指定的任务在指定的时间开始进行重复的固定延迟执行。
void schele(TimerTask task, long delay)
安排在指定延迟后执行指定的任务。
void schele(TimerTask task, long delay, long period)
安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。

Timer是线程安全的,此类可扩展到大量同时安排的任务(存在数千个都没有问题)。其所有构造方法都启动计时器线程。可以调用cancel() 终止此计时器,丢弃所有当前已安排的任务。purge()从此计时器的任务队列中移除所有已取消的任务。此类不提供实时保证:它使用 Object.wait(long) 方法来安排任务。

TimerTask是一个抽象类,由 Timer 安排为一次执行或重复执行的任务。它有一个抽象方法run()----计时器任务要执行的操作。因此,每个具体的任务类都必须继承TimerTask类,并且重写run()方法。另外它还有两个非抽象的方法:
boolean cancel()
取消此计时器任务。
long scheledExecutionTime()
返回此任务最近实际 执行的安排 执行时间。

二、例子

下面用Timer实现一个简单例子:

package stu.timer;

import java.util.Date;
import java.util.TimerTask;

/**
* 重复执行的任务
*
* @author leimin,2008-10-9 9:20:20
*/
public class TestTimerTask extends TimerTask {
/**
* 此计时器任务要执行的操作。
*/
public void run() {
Date executeTime = new Date(this.scheledExecutionTime());
System.out.println("本次任务执行的时间是" + executeTime);
}
}

package stu.timer;

import java.util.Timer;
import java.util.TimerTask;

/**
* 测试JDK Timer的执行
*
* @author leimin,2008-10-9 9:24:35
*/
public class TestTimer {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TestTimerTask();
timer.schele(task, 500L, 1000L);
}
}

运行结果:
本次任务执行的时间是Thu Oct 09 09:47:57 CST 2008
本次任务执行的时间是Thu Oct 09 09:47:58 CST 2008
本次任务执行的时间是Thu Oct 09 09:47:59 CST 2008
本次任务执行的时间是Thu Oct 09 09:48:00 CST 2008
本次任务执行的时间是Thu Oct 09 09:48:01 CST 2008
本次任务执行的时间是Thu Oct 09 09:48:02 CST 2008
本次任务执行的时间是Thu Oct 09 09:48:03 CST 2008
本次任务执行的时间是Thu Oct 09 09:48:04 CST 2008
本次任务执行的时间是Thu Oct 09 09:48:05 CST 2008
......

⑻ Java中使用Timer的schele方法设定程序定点执行问题

time.schele方法第二个参数可以是指延迟多少毫秒开始执行,也可以是一个Date,第三个参数指每隔多少毫秒执行一次task.run
这样你可以懂了吧,先new Date()
设定时间为17:00:00
或者计算出与17:00:00间隔多少毫秒

第三个参数指定了间隔多少时间运行一次,24*3600*1000就是每天运行一次

⑼ java Timer的schele和scheleAtFixedRate方法的区别

void
schele(TimerTask task,
Date time)
Scheles the specified task for execution at the specified time.

void
schele(TimerTask task, Date firstTime, long period)
Scheles the specified task for repeated fixed-delay execution,
beginning at the specified time.

void
schele(TimerTask task, long delay)
Scheles the specified task for execution after the specified delay.

void
schele(TimerTask task,
long delay, long period)
Scheles the specified task for repeated fixed-delay execution,
beginning after the specified delay.

void
scheleAtFixedRate(TimerTask task,
Date firstTime, long period)
Scheles the specified task for repeated fixed-rate execution,
beginning at the specified time.

void
scheleAtFixedRate(TimerTask task,
long delay, long period)
Scheles the specified task for repeated fixed-rate execution,
beginning after the specified delay.

参数中
delay参数是延时,就是延时多少毫秒后开始。
period 是周期,就是隔多少毫秒后,再执行下一次
time 就是执行的时间,不循环

firstTime 就是首次执行的时间

schele 会等本次执行完毕、再下一次

scheleAtFixedRate 就是不管上一次有没有执行完毕,都继续本次、也会按原定时间,执行下一次。。。。。。。。。。

⑽ java Timer中schele()的用法的问题

这是方法1
你看可以么
还有方法2
就是取两个时间差(毫秒数)
得到结果

热点内容
sql存储过程返回多个结果 发布:2025-01-28 03:24:03 浏览:462
长安欧尚科赛哪个配置值得购买 发布:2025-01-28 03:19:35 浏览:115
c全排列算法 发布:2025-01-28 03:18:16 浏览:753
梵蒂冈顶级时装ftp 发布:2025-01-28 03:03:36 浏览:694
手游脚本有前途吗 发布:2025-01-28 02:46:55 浏览:378
抓包编程 发布:2025-01-28 02:42:41 浏览:929
安卓平板上怎么设置热点 发布:2025-01-28 02:36:33 浏览:717
如何在手机上压缩图片 发布:2025-01-28 02:34:09 浏览:989
服务器ip挂上公网 发布:2025-01-28 02:31:15 浏览:978
吃鸡配置需要什么条件 发布:2025-01-28 02:26:15 浏览:9