publicvoidonReceiveMsg(Stringmessage){這個函數是不定時調用的log.info("2"+message);msglink.add(message);//這是一個連結清單empty.signal();}classHandThreadextendsThread{publicvo...
public void onReceiveMsg(String message) { 這個函數是不定時調用的
log.info("2"+message);
msglink.add(message); //這是一個連結清單
empty.signal();
}
class HandThread extends Thread{
public void run(){
while(true){
lock.lock();
try{
while(msglink.size()==0){
System.out.println("暫無主動通知消息");
empty.await(); //即便受到了信号,也卡在這裡不向下執行
}
System.out.println("msglink:"+msglink.size());
String msg = msglink.removeFirst();
handle(msg);
}catch(InterruptedException e){
log.error("HandThread is interrupted!",e);
}
finally{
lock.unlock();
}
}
}
}
如上,我需要接受onReceiveMsg()函數中的 message參數并解析,為了保證效率,接受和處理分離開來。message存在一個連結清單裡面,每次将先來的消息加傳入連結表尾,從表頭取資料解析。線程在另一個函數裡啟動。請大神幫我看看代碼,指點錯誤。另外也請問下這個 lock.lock() 和lock.unlock()的作用
展開