Java定时任务ScheduledThreadPoolExecutor
以前定时任务一直用Timer这个类,后来发现ScheduledThreadPoolExecutor功能更强大,我们先看个简单的示例,然后再看看API中的描述:
这个定时任务是我的项目中,每隔5分钟去检查设备的在线状态的。
[java]
public class CheckDeviceStateExcuter {
private static final Log log = LogFactory.getLog(CheckDeviceStateExcuter.class);
private static final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
private static DeviceDao deviceDao = new DeviceDaoImpl();
private static List<DeviceDTO> devices = new ArrayList<DeviceDTO>();
// invoke DLL method to get the details of device
static JoymindCommDLLLib instance = JoymindCommDLLLib.INSTANCE;
// check states
public static void checkStart() {
final Runnable checker = new Runnable() {
public void run() {
System.out.println("check");
devices = deviceDao.queryDevices();
for(DeviceDTO device : devices){
String ip = device.getIp();
String id = "auto_refresh_" + ip;
String iniPath = XmlOperationTool.PLAYLIST_TEMPFILE_FOLDER + id
+ ".ini";
int flag = instance.GetSysInfo(ip, iniPath);
if(flag == 1){
// get ini file
SystemInfoDTO info = null;
try {
info = FileOperationTool.parseIni(iniPath);
device.setMacAdd(info.getMacAddress());
device.setIp(info.getIp());
device.setGateway(info.getGateway());
device.setOnlineState("在线");
device.setBootTime(info.getBootTime());
device.setDeviceVersion(info.getVersion());
device.setAvailableSpace(info.getFreedisk());
device.setpNo(info.getpNo());
device.setWidth(info.getWidth());
device.setHeight(info.getHeight());
device.setStorage(info.getStorage());
device.setTime(info.getTime());
device.setPrgTotal(info.getPrgTotal());
device.setPrgIndex(info.getPrgIndex());
device.setStatusNo(info.getStatus());
if (info.getStorage().equals("1")) {
device.setStorageName("FLASH存储");
}
if (info.getStorage().equals("2")) {
device.setStorageName("RAM存储");
&n
补充:软件开发 , Java ,