日期:2014-05-20  浏览次数:20704 次

java 任务调度问题
用Quartz 怎样实现当本周期任务未运行完成下一周期不能启动?

------解决方案--------------------
给个全局boolean变量,判断执行完之后为true,否则为false
------解决方案--------------------
设置
<property name="concurrent" value="false" />
------解决方案--------------------
可以用队列的方式
Quartz不直接执行任务,而是把任务扔到一个队列中,用一个线程来执行队列的任务,任务执行结束,从队列中删除任务
------解决方案--------------------
Quartz是spring下面的一个子框架,我现在用的是JDK自带的TIMER,发给你参考一下啊。
import java.io.IOException;
import java.sql.Connection;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

public class Timeer {
/**
* 定时器
* @return 
*/
Calendar ca=null;
Calendar ca1=null;
static Gui gui = new Gui();
 
static Connection con=null;
Bufferreader bff= new Bufferreader("c:\\king.txt");
public void breakTimer()
{
/**
* 终止定时器
* @return 
*/
Timer timer1=new Timer();
timer1.cancel(); 
}
public void Time() throws IOException

Timer timer=new Timer();
String time = bff.getTimeA();
ca=Calendar.getInstance();
ca.add(Calendar.MILLISECOND, Integer.parseInt(time));
timer.schedule(new TimerTask() 
{
public void run() {
XmlSend textjdbc=new XmlSend();

try {
textjdbc.sendTWO();
textjdbc.sendONE();

catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
Time();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}, ca.getTime());
}

void getcon() throws IOException{

@SuppressWarnings("unused")
final Connection con=null;//获取Connection
Time();
 


}