java程序资源占用问题
发布网友
发布时间:2022-12-10 07:25
我来回答
共6个回答
热心网友
时间:2024-12-04 06:55
我觉得你的代码没法优化了,建议你用JAVA的定时器来做,这样比较理想,看代码:
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Cont
{
public static void main(String[] args) throws IOException,ParseException
{
Timer t = new Timer(true);
Date start_time = new Date();
SimpleDateFormat sm = new SimpleDateFormat("yyyyMMdd");//
String cur_date = sm.format(start_time)+"1800000";//格式化日期格式并且在后面加上时间为18时0分0秒
sm = new SimpleDateFormat("yyyyMMddHHmmss");//重新获取日期时间
start_time = sm.parse(cur_date);//尝试把字符串 cur_date 解释为日期和时间的表示形式,该方法已过时
t.schele(new TimerTask(){
@Override
public void run(){
try
{
Runtime.getRuntime().exec("shutdown -s -t 1");
}
catch(Exception e)
{
System.out.println("error");
}
}
},start_time,5000);//start_time是指定执行run()方法内的代码的时间
System.out.println("定时器开始");
while(true){
int c=System.in.read();
if(c=='c') {
t.cancel();
System.out.println("定时器已销毁!");
}
}
}
}
//上面这段代码会在今天下午的18点准时关机,慢慢研究吧,希望能帮到你
热心网友
时间:2024-12-04 06:55
你写的这个定时关机程序,已经很简洁了.我没办法啊,看一下别人的吧.
热心网友
时间:2024-12-04 06:56
你这个一直再比较 所以占用高 加上等待1秒试试
sleep(1000);
热心网友
时间:2024-12-04 06:56
在循环里加下面的话,位置只要不在catch里,随意:
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
热心网友
时间:2024-12-04 06:57
jdk1.3以后支持这个操作
java.util.Timer;
java.util.TimerTask;
很简单的操作!
具体参考:http://lib.javaeye.com/blog/70629
参考资料:http://lib.javaeye.com/blog/70629
热心网友
时间:2024-12-04 06:58
import java.util.*;
public class Main extends Thread
{
public static void main(String[] args) throws Exception
{
Date time1_set=new Date();
Date time2_set=new Date();
Date time_now=new Date();
time_now.getTime();
time1_set.setHours(23);
time1_set.setMinutes(30);
time1_set.setSeconds(00);
time2_set.setHours(4);
time2_set.setMinutes(59);
time2_set.setSeconds(59);
while(true)
{
sleep(1000);
if(time1_set.compareTo(time_now)==-1&&time2_set.compareTo(time_now)==-1)
{
try
{
Runtime.getRuntime().exec("shutdown -s -t 1");
}
catch(Exception e)
{
System.out.println("error");
}
}
}
}}
用线程 每一次检测隔一秒 可以改更长