当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,