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,好像不是最理想的方法,有没有更好的办法?请大家指点一下!
public class TerminalProcess extends Thread{
Object ob = null;
public TerminalProcess(Object o){
this.ob = o;
}public void run(){
while(true){
try{
synchronized(ob){
processData();
if(TerminalMsgQueue.getPoolSize() == 0){
ob.wait();
}
}
}catch(Exception e){
logger.info(e.getMessage());
}
}
} 另一个线程中:
public class TerminalServer extends Thread{
Object ob = null;
public TerminalServer(Object o){
this.ob = o;
}
public void run(){
try{
........
synchronized(ob){
ob.notifyAll();
}
}catch(Exception e){
logger.info(e.getMessage());
}
}main函数中:
private static final Object o = new Object();TerminalServer ts = new TerminalServer(o);
new Thread(ts, "ts").start();TerminalProcess tp = new TerminalProcess(o);
for(int i = 0; i < proThreadNum; i++){
Thread t = new Thread(tp, "tp" + 0);
t.start();
}wait()和notify()用的是同一个监视器对象o