按如下要求创建一个定时器要求如下:制定java定时任务在每个整分时刻执行例如:10点52分0秒执行10点53分0秒执行定时任务是:将计算机物理内存使用情况记录到文件memorytxt末尾每次定时任务在memorytxt中写入一行内存使用数据内存使用数据包含三项值例如:总的物理内存17038327808;剩余物理内存6949703680;已使用物理内存10088624128;提示: 取
import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.lang.management.ManagementFactory; import com.sun.management.OperatingSystemMXBean; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Timer; import java.util.TimerTask;
public class MemoryTimerTask { public static void main(String[] args) { TimerTask task = new TimerTask() { @Override public void run() { //获取当前时间 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String currentTime = sdf.format(date);
//获取内存使用情况
OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
long totalMemorySize = osmxb.getTotalPhysicalMemorySize();
long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize();
long usedPhysicalMemorySize = totalMemorySize - freePhysicalMemorySize;
//将内存使用情况写入文件
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("memory.txt", true));
writer.write("时间:" + currentTime + "; ");
writer.write("总的物理内存:" + totalMemorySize + "; ");
writer.write("剩余物理内存:" + freePhysicalMemorySize + "; ");
writer.write("已使用物理内存:" + usedPhysicalMemorySize + "\n");
writer.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
};
Timer timer = new Timer();
//获取当前时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("ss");
int seconds = Integer.parseInt(sdf.format(date));
//计算下一个整分时刻
long delay = (60 - seconds) * 1000;
//每隔一分钟执行一次
timer.scheduleAtFixedRate(task, delay, 60 * 1000);
}
}
原文地址: https://www.cveoy.top/t/topic/bRPo 著作权归作者所有。请勿转载和采集!