导航:首页 > 配服务器 > java定时任务如何放到服务器上

java定时任务如何放到服务器上

发布时间:2022-04-21 21:37:47

A. java定时任务怎么实现

/**
* 普通thread
* 这是最常见的,创建一个thread,然后让它在while循环里一直运行着,
* 通过sleep方法来达到定时任务的效果。这样可以快速简单的实现,代码如下:
* @author GT
*
*/
public class Task1 {
public static void main(String[] args) {
// run in a second
final long timeInterval = 1000;
Runnable runnable = new Runnable() {
public void run() {
while (true) {
// ------- code for task to run
System.out.println("Hello !!");
// ------- ends here
try {
Thread.sleep(timeInterval);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
}
[java] view plain
import java.util.Timer;
import java.util.TimerTask;
/**
*
* 于第一种方式相比,优势 1>当启动和去取消任务时可以控制 2>第一次执行任务时可以指定你想要的delay时间
*
* 在实现时,Timer类可以调度任务,TimerTask则是通过在run()方法里实现具体任务。 Timer实例可以调度多任务,它是线程安全的。
* 当Timer的构造器被调用时,它创建了一个线程,这个线程可以用来调度任务。 下面是代码:
*
* @author GT
*
*/
public class Task2 {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
@Override
public void run() {
// task to run goes here
System.out.println("Hello !!!");
}
};
Timer timer = new Timer();
long delay = 0;
long intevalPeriod = 1 * 1000;
// scheles the task to be run in an interval
timer.scheleAtFixedRate(task, delay, intevalPeriod);
} // end of main
}
[java] view plain
import java.util.concurrent.Executors;
import java.util.concurrent.ScheledExecutorService;
import java.util.concurrent.TimeUnit;
/**
*
*
* ScheledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。
* 相比于上两个方法,它有以下好处:
* 1>相比于Timer的单线程,它是通过线程池的方式来执行任务的
* 2>可以很灵活的去设定第一次执行任务delay时间
* 3>提供了良好的约定,以便设定执行的时间间隔
*
* 下面是实现代码,我们通过ScheledExecutorService#scheleAtFixedRate展示这个例子,通过代码里参数的控制,首次执行加了delay时间。
*
*
* @author GT
*
*/
public class Task3 {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
// task to run goes here
System.out.println("Hello !!");
}
};
ScheledExecutorService service = Executors
.();
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间
service.scheleAtFixedRate(runnable, 10, 1, TimeUnit.SECONDS);
}
}

B. 使用Java语言,在服务器后台处理定时器操作

这个功能采用线程来实现将非常简单,代码片段:
public void 监控器 extends Thread{
public void run(){
try{
Calendar cal = Calendar.getInstance();
int minute = cal.get(Calendar.MINUTE);
if( minute%10==0 ){
// 这里写你想执行的代码:
}
Thread.sleep(100);
}catch(e){}
}
}
这个代码还不能马上运行,只是给出了一个思路:
1 使用一个线程不停得监控一个时间点。例子中的每10分钟执行一次
2 调用到点后的相关代码。简单吧!
希望对你有帮助!

C. java编程:我写了一个java定时器,怎么样能让它在系统运行时开始加载,到时间了就运行啊......

后面就是具体执行的业务代码忽略就好

D. java定时分配

我们可以使用Timer和TimerTask类在java中实现定时任务,详细说明如下:

1、基础知识
java.util.Timer
一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。此类是线程安全的:多个线程可以共享单个 Timer 对象而无需进行外部同步。
java.util.TimerTask
由 Timer 安排为一次执行或重复执行的任务。

2、示例代码
该示例实现这样一个功能,在系统运行期间,每30分钟,系统自动检查连接池中的可用连接数,并输出到日志中。
首先创建一个需要定时执行的任务类,这个任务类需要继承TimerTask,然后重写run()方法,run()方法体中的代码就是定时需要执行的操作,在本demo中,就是获取连接池中当前可用连接数,并输出到日志中,具体实现代码如下:
public class TaskAvailableConnectNumber extends TimerTask {
private Logger log = Logger.getLogger(TaskAvailableConnectNumber.class);
private ConnectionPool pool=ConnectionPool.getInstance();
@Override
publicvoid run() {
log.debug("当前连接池中可用连接数"+pool.getAvailableConnectNumber());
}
}
下面定义一个监听器,负责在应用服务器启动时打开定时器,监听器需要实现ServletContextListener接口,并重写其中的contextInitialized()和contextDestroyed()方法,代码如下:
public class OnLineListener implements ServletContextListener{
private Logger log = Logger.getLogger(OnLineListener.class);
Timer timer = null;
//在应用服务器启动时,会执行该方法
publicvoid contextInitialized(ServletContextEvent arg0) {
//创建一个定时器,用于安排需要定时执行的任务。
timer = new Timer();
//为定时器安排需要定时执行的任务,该任务就是前面创建的任务类TaskAvailableConnectNumber,并指定该任务每30分钟执行一次。
timer.schele(new TaskAvailableConnectNumber(), 0, 30*60*1000);
log.debug("启动定时器");
}
//应用服务器关闭时,会执行该方法,完成关闭定时器的操作。
public void contextDestroyed(ServletContextEvent arg0) {
if(timer!=null){
timer.cancel();//关闭定时器
log.debug("-----定时器销毁--------");
}
}
}
监听器要想正常运行,需要在web.xml文件中进行配置,配置信息如下:
<!-- 监听器配置开始 -->
<listener>
<listener-class>
cn.sdfi.listen.OnLineListener
</listener-class>
</listener>
<!-- 监听器配置结束 -->
以上步骤完成后,一个简单的定时器就算开发完成了。

E. 如何吧java程序布置成linux服务并让它定时运行

这个是我在网上找的不知道是不是你要的:
java定时任务Timer 关于定时任务,似乎跟时间操作的联系并不是很大,但是前面既然提到了定时任务,索性在这里一起解决了。设置定时任务很简单,用Timer类就搞定了。一、延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行。代码如下:
package test;
import java.util.Timer;
public class TimeTaskTest {
public static void main(String[] args){ Timer timer = new Timer();
timer.schele(new Task(), 60 * 1000);
}
}
解释一下上面的代码。上面的代码实现了这样一个功能,当TimeTask程序启动以后,过一分钟后执行某项任务。很简单吧:先new一个Timer对象,然后调用它的schele方法,这个方法有四个重载的方法,这里我们用其中一个,

F. 我写了一个java程序(有main函数的那种),我现在想让这个程序每天定时在服务器自动运行 ,望高手指点

开始->程序->附件->系统工具->任务计划->选择添加任务计划->点击下一步->点击(浏览),找到你想定时执行的class文件,一步一步完成,相信你能看懂的,前提要配置好classPath

G. 用java怎样自动从客户端数据库提交到服务器数据库

先要设置网络流,然后用服务器监听,
监听到有数据过来的话然后连接服务器数据库进行插入修改更新操作就可以了..具体代码现在没有自动提交的话可以用定义一个timer让它帮你定时提交,也可以用开源quartz框架,提交的话方法比较多可以直接用socket提交,可以用webservice等。

H. 用java做了一个简单的定时任务工程,不知道如何让它在服务器上运行起来应该怎么做

这个是我在网上找的不知道是不是你要的:

java定时任务Timer 关于定时任务,似乎跟时间操作的联系并不是很大,但是前面既然提到了定时任务,索性在这里一起解决了。设置定时任务很简单,用Timer类就搞定了。一、延时执行首先,我们定义一个类,给它取个名字叫TimeTask,我们的定时任务,就在这个类的main函数里执行。代码如下:
package test;
import java.util.Timer;
public class TimeTaskTest {
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)
没必要说什么了吧:)四、j2ee中的定时任务在实际的项目中,往往定时任务需要对web工程中的资源进行操作,这样一来,用上面的单个程序的方式可能就有点力不从心了,因为很多web工程的资源它操作不到。解决的办法是,使用Servlet,把执行定时任务的那些代码放到Servlet的init()函数里就可以了,这个easy,就没有必要再写示例代码了吧

I. 有java高手么,用过定时器quartZ的,为什么本地eclipse可以执行,放服务器上就不执行

我估计是本地时间和服务器时间不一致导致的。
当在本地eclipse运行时,服务器在本地,假如定时器是要在五点做点什么,
服务器(也就是你本地了,也就是你电脑时间)到五点的时候,就开始运行,不会有偏差。
当你部署到别的地方时,当本地时间五点了,但是服务器时间(就是部署代码的那台电脑时间)才
四点五十九,所以就没运行。

阅读全文

与java定时任务如何放到服务器上相关的资料

热点内容
java多客服 浏览:595
web智能算法 浏览:684
androidintentapi 浏览:922
javazxing生成二维码 浏览:690
锦州麻将算钱的是哪个app 浏览:776
linux实验shell编程实验 浏览:108
混凝土结构原理pdf 浏览:20
机房断电后服务器如何启动数据库 浏览:986
服务器系统驱动如何安装 浏览:963
linux115网盘 浏览:683
适合当程序员的微信头像 浏览:529
m20数控编程指令 浏览:894
自制手机通讯录加密 浏览:139
服务器相当于电话什么部件 浏览:320
侠客风云传压缩包 浏览:376
雷军会编程软件好不好 浏览:186
java获取ftp目录 浏览:986
androidriljava 浏览:338
交友网站app哪个好 浏览:238
回眸pdf 浏览:711