我正在研究java.nio无阻塞客户端服务器应用程序,该应用程序有一个非常简单的自定义协议:
MyApplcationProtocol:
int lenpalcket;
int filedone;
String Description
byte[] myBodyProtcol
(体长不固定。)
问题是有时我在ByteBuffer中没有足够的字节然后解码失败
while (myByteBuffer.hasRemaining()) {
Utils.fillMyClass(myclass,myByteBuffer);
public void fillMyClass(myclass,myByteBuffer){
myclass.filedone = myByteBuffer.getInt();
...
int bodyLen = myByteBuffer.getInt();
byte[] bodyByte = new byte[bodyLen];
myByteBuffer.get(bodyByte);
...
}
我必须等待下一个缓冲区才能完成填充类,所以我想避免放睡,因为它会阻塞线程。 是否有模式/方式/链接/示例来解决此问题?
我还尝试将“未读字节”存储在临时缓冲区中,但我不喜欢它,有时候我无法正常工作。
谢谢,任何帮助表示赞赏