java多线程 CPU占用率100%问题 - Java / Java SE
Java code:
main函数中:
TerminalProcess tp = new TerminalProcess();
for(int i = 0; i < proThreadNum; i++){
Thread t = new Thread(tp, "tp" + i);
t.start();
}
TerminalProcess类:
public class TerminalProcess extends Thread{
public void run(){
while(true){
processData();
}
}
}
如何使用while(true){....},就会造成线程阻塞起来,CPU占用率达到100%,如果使用sleep或者wait,好像不是最理想的方法,有没有更好的办法?请大家指点一下!
没有!这都死循环了,估计 processData 中也没有阻塞的时候,CPU 100% 是很正常的,因为 CPU 在高强度地进行计算。
都不知道这程序在干嘛,是干嘛用的。
while(TRUE)
while(true)
一般多线程run方法中用while(true),就要用到wait()和notifyAll()方法,wait()可以实现线程阻塞。
适当加上sleep
while(true)不是问题,以前在pushlet框架(comet)中看到过这样的语句,就是消息订阅之类的是吧。那得如楼上所说,wait()方法控制下线程,在需要的时候才notify。把processData()方法贴出来看看吧
可以用w
相关问答:
我JSP的页面是:
<%@ page language="java" contentType="text/html; charset=gb2312"
%>
<script>
function Save(){
xmlHttp=GetXmlHttpObject()
if(xmlHttp==nul ......
我在 java核心技术上 看了一个 利用 Java socket email的例子 可是怎么也 不成功 为什么?
源码
Java code:
package cn.com.test.email;
import java.awt.GridBagLayout;
import java.awt.event.Action ......
为什么HTML以及一些其它标签会显示一些特定表现形式呢?如HTML中的换行标签<BR/>在底层是怎样实现的呢?现实的原理是什么呢
去W3C官方网站上,看看吧!我想一看你就明白了
我猜和编译原理有关,浏览器里可 ......
各位老大好。。。小弟有一个乱码问题急需帮忙解决
我在本页中用request.getParameter("name")取变量。。变量的赋值为汉字。我在页面的开头加了<%@ page language = "java" contentType=&quo ......
使用java在windows7 32位下连接MSSQL。
两台机器,windows7 32位,在控制面板里面全部设置语言和区域选项都english-unitedstates
唯一区别只有在安装SQL server 2008的时候 选择的字符集不一样,
exec sp_helpsor ......