CPU是100%的被占用。
现在我的程序就是一个主类,如果我把程序独立出来再写个线程,效率会不会高一些?

解决方案 »

  1.   

    public static void main(String[] args) {
             Object o = new Object();
    while(true) {
    if(时间吻合) {
    就执行服务器代码;
    }
    else{
                                synchronized(o){
        //Thread.currentThread().sleep(60000);
                                   o.wait(60000);
                                }
    }
    }
    }
      

  2.   

    没看到wait也有参数么,一样的60秒自动唤醒一次。
    不过你如果单纯是让程序休眠一会的话,用Thread.sleep和this.wait()的效果是一样的。都不应该出现cpu 100%的情况。
    你确信是sleep的问题?建议先写个简单的测试程序看看sleep的时候cpu是不是100%的。
      

  3.   

    楼主,我试验了一下,我的程序没与你说的问题啊,代码如下:(供参考)
    /*
     * @(#)ThreadTest.java
     * Have classes:ThreadTest
     * Copyright 2005 Fane. All rights reserved.
     * @author      Fane
     * @version     1.0, 04/03/05
     * @since       JDK1.4.0
     */
    package person.fane.test;import java.util.*; 
    public class ThreadTest
    {
    public static void main(String[] args)
    {
    MainMethod mm=new MainMethod();
    /*
    Calendar calendarNow=Calendar.getInstance();
    System.out.println("The Hour is :"+calendarNow.get(10));
    */

    boolean runOnce=true; 
    while(runOnce)
    {
    Calendar calendarNow=Calendar.getInstance();
    if(calendarNow.get(10)==0)
    {
    mm.setIFlag(true);
    new Thread(mm).start();
    runOnce=false;
    }else
    {
    try
    {
    Thread.sleep(60000);
    }catch(Exception e)
    {
    System.out.println(e.getMessage());
    }
    }
    }

      }
    }class MainMethod implements Runnable
    {
    private boolean iFlag=false;
    public void run()
    {
    while(iFlag)
    {
    System.out.println("时间到了,我要好好学习,天天向上!!!");
    }
    }

    public void setIFlag(boolean iFlag)
    {
    this.iFlag=iFlag;
    }
    }我调整时间到11:59,然后运行程序,等待的时候只有4%的CPU利用率
    1分钟以后线程运行时才上升有问题再沟通
      

  4.   

    没看到wait也有参数么,一样的60秒自动唤醒一次。
    不过你如果单纯是让程序休眠一会的话,用Thread.sleep和this.wait()的效果是一样的。都不应该出现cpu 100%的情况。
    你确信是sleep的问题?建议先写个简单的测试程序看看sleep的时候cpu是不是100%的。
    SLEEP和WAIT的作用是不怎么相同的
    WAIT的时候,系统不会去调度线程,也就是不会占用CPU时间,SLEEP的时候,系统会去调度线程,而该线程的执行的是等待,相当于循环!