java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现?
如题,这个代码就是从数据库中读出一部分数据导入到txt文件中,然后传到发图片上去?怎么实现这样的定时执行?望各位大侠不吝赐教。...
如题,这个代码就是从数据库中读出一部分数据导入到txt文件中,然后传到发图片上去?怎么实现这样的定时执行?
望各位大侠不吝赐教。 展开
望各位大侠不吝赐教。 展开
6个回答
展开全部
用spring quartz
public class MyJob{
//这里如果你定义实例变量,可用spring依赖注入,例如
private String job;
public void setJob(String job){
this.job = job;
}
//你要执行的操作
public void execute(){
}
}
spring 配置文件
beans-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id = "myJob" class="MyJob">
<!--如果有注入属性在这里写 <property name = "job" value="hihi"></property> -->
</bean>
<bean id = "myjobDetail" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myJob">
</property>
<property name="targetMethod" value="execute"></property>
</bean>
<bean id ="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="myjobDetail"/>
<!-- 秒 分 小时 天 月 年-->
<property name="cronExpression" value="0 25 * * * ?"/>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref bean = "triggerBean"/></list>
</property>
</bean>
</beans>
在主类中读取定义文件,任务计划自动运行。
public class Test(){
public void static main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("beans-config.xml");
}
}
将配置文件放在该项目的classpath下,一般你放在src目录下即可。也可以自己创建路径放置,在项目的.classpath中可配置下此路径。
最后导入spring的jar包就可以了。
public class MyJob{
//这里如果你定义实例变量,可用spring依赖注入,例如
private String job;
public void setJob(String job){
this.job = job;
}
//你要执行的操作
public void execute(){
}
}
spring 配置文件
beans-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id = "myJob" class="MyJob">
<!--如果有注入属性在这里写 <property name = "job" value="hihi"></property> -->
</bean>
<bean id = "myjobDetail" class = "org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="myJob">
</property>
<property name="targetMethod" value="execute"></property>
</bean>
<bean id ="triggerBean" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="myjobDetail"/>
<!-- 秒 分 小时 天 月 年-->
<property name="cronExpression" value="0 25 * * * ?"/>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list><ref bean = "triggerBean"/></list>
</property>
</bean>
</beans>
在主类中读取定义文件,任务计划自动运行。
public class Test(){
public void static main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("beans-config.xml");
}
}
将配置文件放在该项目的classpath下,一般你放在src目录下即可。也可以自己创建路径放置,在项目的.classpath中可配置下此路径。
最后导入spring的jar包就可以了。
展开全部
不需要spring啦,java本身就带timmer类,给你段代码吧
import java.io.IOException;
import java.util.Timer;
public class TimerTest ...{
public static void main(String[] args)...{
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
while(true)...{//这个是用来停止此任务的,否则就一直循环执行此任务了
try ...{
int ch = System.in.read();
if(ch-'c'==0)...{
timer.cancel();//使用这个方法退出任务
}
} catch (IOException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
static class MyTask extends java.util.TimerTask...{
@Override
public void run() ...{
// TODO Auto-generated method stub
System.out.println("________");
}
}
}
import java.io.IOException;
import java.util.Timer;
public class TimerTest ...{
public static void main(String[] args)...{
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒,如果传递一个Data参数,就可以在某个固定的时间执行这个任务.
while(true)...{//这个是用来停止此任务的,否则就一直循环执行此任务了
try ...{
int ch = System.in.read();
if(ch-'c'==0)...{
timer.cancel();//使用这个方法退出任务
}
} catch (IOException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
static class MyTask extends java.util.TimerTask...{
@Override
public void run() ...{
// TODO Auto-generated method stub
System.out.println("________");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不用那么麻烦,你会多线程吗?你启动一个后台线程,隔那么久就执行一次操作就OK了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Timer和quartz确实都可行,看个人喜好。spring方便修改和配置,一旦改变时间需求,能更方便的修改配置文件就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
spring Quartz
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询