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()的作用
展开