java守时使命小比如ITeye - 众发娱乐

java守时使命小比如ITeye

2019年03月20日08时16分33秒 | 作者: 听南 | 标签: 使命,履行,时刻 | 浏览: 542


public class Main {
public static void main(String[] args) {
new JmsStartThread().start();
}
}


public class JmsStartThread extends Thread{
public void run(){
TimeTask.getInstance().startTimeTask();
}
}


import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class TimeTask {
//守时周期履行指定的使命
private static final ScheduledExecutorService SCHEDULED
= Executors.newScheduledThreadPool(1);

//单例形式*************
private static final class TimeTaskEg{
private static final TimeTask timeTask = new TimeTask();
}

private TimeTask(){}

public static TimeTask getInstance(){
return TimeTaskEg.timeTask;
}

/**
* 发动守时使命查询端口是否联通
*/
public void startTimeTask(){
SCHEDULED.scheduleAtFixedRate(PortThread.getInstance(), 0, 30, TimeUnit.SECONDS);
//办法:scheduleAtFixedRate(Runnable command,履行线程
long initialDelay,初始化延时
long period,两次开端最小距离时刻
Timeunit unit计时单位

当履行使命的时刻大于咱们指定的距离时刻时,他并不会在指定距离时拓荒一个新的线程并发履行这个使命。而是等候该线程履行结束。
}
public void stopTimeTask(){
SCHEDULED.shutdownNow();
}
}


import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

public class PortThread implements Runnable{

private static final class PortThreadEg{
private static final PortThread portThread = new PortThread();
}
private PortThread(){}

public static PortThread getInstance(){
return PortThreadEg.portThread;
}

@Override
public void run() {
try {
Socket socket = new Socket("10.0.0.2",443);
socket.close();
System.out.println("port connect");
} catch (UnknownHostException e) {
System.out.println("port not connect");
} catch (IOException e) {
System.out.println("port not connect");
}
}

}


Timer履行周期使命时依靠体系时刻,假如当时体系时刻发作改动会呈现一些履行上的改动。
ScheduledExecuterService根据时刻的推迟,不会因为体系时刻的改动发作履行改动
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表众发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章