线程的问题。 CPU是100%的被占用。现在我的程序就是一个主类,如果我把程序独立出来再写个线程,效率会不会高一些? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void main(String[] args) { Object o = new Object(); while(true) { if(时间吻合) { 就执行服务器代码; } else{ synchronized(o){ //Thread.currentThread().sleep(60000); o.wait(60000); } } }} 没看到wait也有参数么,一样的60秒自动唤醒一次。不过你如果单纯是让程序休眠一会的话,用Thread.sleep和this.wait()的效果是一样的。都不应该出现cpu 100%的情况。你确信是sleep的问题?建议先写个简单的测试程序看看sleep的时候cpu是不是100%的。 楼主,我试验了一下,我的程序没与你说的问题啊,代码如下:(供参考)/* * @(#)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分钟以后线程运行时才上升有问题再沟通 没看到wait也有参数么,一样的60秒自动唤醒一次。不过你如果单纯是让程序休眠一会的话,用Thread.sleep和this.wait()的效果是一样的。都不应该出现cpu 100%的情况。你确信是sleep的问题?建议先写个简单的测试程序看看sleep的时候cpu是不是100%的。SLEEP和WAIT的作用是不怎么相同的WAIT的时候,系统不会去调度线程,也就是不会占用CPU时间,SLEEP的时候,系统会去调度线程,而该线程的执行的是等待,相当于循环! 击球高手啊,关于package的问题。。。 正则表达式问题,替换所有数字,为非常长的数字,超难 如何将编好的程序编译成.jar和.exe java菜鸟问-线程锁的问题! applet怎么调用打印机? 一个简单的问题,大家帮我看看啊! ***真正的难题.高手请进*** 谁帮我看一下到底哪错了 在使用微软Java包时,遇到的问题. 请教:e.printStackTrace()是什么作用? 昨天去图书馆借了一本书,大家说这本书好吗??? C里面的time_t怎么对应到java的类型,C和java都熟的进
Object o = new Object();
while(true) {
if(时间吻合) {
就执行服务器代码;
}
else{
synchronized(o){
//Thread.currentThread().sleep(60000);
o.wait(60000);
}
}
}
}
不过你如果单纯是让程序休眠一会的话,用Thread.sleep和this.wait()的效果是一样的。都不应该出现cpu 100%的情况。
你确信是sleep的问题?建议先写个简单的测试程序看看sleep的时候cpu是不是100%的。
/*
* @(#)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分钟以后线程运行时才上升有问题再沟通
不过你如果单纯是让程序休眠一会的话,用Thread.sleep和this.wait()的效果是一样的。都不应该出现cpu 100%的情况。
你确信是sleep的问题?建议先写个简单的测试程序看看sleep的时候cpu是不是100%的。
SLEEP和WAIT的作用是不怎么相同的
WAIT的时候,系统不会去调度线程,也就是不会占用CPU时间,SLEEP的时候,系统会去调度线程,而该线程的执行的是等待,相当于循环!