首先,如果是单个定时任务(Timer),只讲使用方法
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
String url = "";
String param = "";
try{
//服务地址
URL urlPath = new URL(url);
// 设定连接的相关参数
HttpURLConnection connection = (HttpURLConnection) urlPath.openConnection();
// 设置是否向HttpURLConnection输出 post请求参数要放在http正文内需设为true 默认false
connection.setDoOutput(true);
// 设置请求方法类型为 默认为GET 此处必须为大写
connection.setRequestMethod("POST");
// 设置连接超时
connection.setConnectTimeout(5000);
// 设置读取超时
connection.setReadTimeout(5000);
// 开始连接 connection.getOutputStream()已包含此操作
// connection.connect();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//1、日期转字符串
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
String dateString = sdf.format(date);
//上面一直到 public void run() 都可以不要,写自己需要执行的任务,即可
//切记,只能任务只能写在main方法中,不然会一直卡在里面跳不出来
}catch (Exception e){
e.printStackTrace();
}
}
},1000,1000*60); //此时为一分钟执行一次 每次延迟一秒执行
}
之后,多个定时任务执行 (ScheduledExecutorService)
package cgddSrevice;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.*;
public class main {
// 2 表示两个线程池,可以多写
public ScheduledExecutorService service=Executors.newScheduledThreadPool(2);
//第一个任务
public void timeOne(){
service.scheduleWithFixedDelay(new Runnable()
{
public void run()
{
//任务一
}
},0,1,TimeUnit.HOURS); //延迟0s,每一小时获取一次
}
//第二个任务
public void timeTwo(){
service.scheduleWithFixedDelay(new Runnable()
{
public void run()
{
//任务2
}
},2000,1000*60,TimeUnit.MILLISECONDS); //延迟两秒,每分钟获取一次
}
public static void main(String[] args) throws InterruptedException,ExecutionException {
main main = new main();
//如果任务有先后执行顺序的话,给任务加延迟就行
if (param == ""){
main.timeOne();
}
main.timeTwo();
}
}