0
我试图做的工作就是模拟停止和等待ARQ在java.The初始设置如何在java中实现多线程计时器任务?
- 创建
ServerSocket
。 - 对于每个接受的客户端,使用ServerSocket.accept为该客户端创建一个新线程。
现在,主要部分是我基本上试图做的。
- 发送数据包给客户端。 (或者一些数据到客户端)
等待1秒但如果ACKKNOWLEDGEMENT ARRIVES内的休息时间等候时间,并何去何从下一个循环
List<String> frames = frame.getFrames(Server.getData()); for(int i=0;i<frames.size();++i) { String currFrame = frames.get(i); writer.println(currFrame); // A printwriter for socket writer.flush(); if(reader.readline()) // for 1 sec /** Here is what I want to do. I want to keep reading for input upto 1 sec. if No input is found after even after 1 sec. Decrement i and go to the start of the loop **/ }
的问题是,这个阅读器是一个阻塞代码将保持到输入可用。但是我想要的是,如果1秒后读卡器没有找到输入,它就会跳出循环。我们必须注意到这个代码是在一个单独的线程中。
那么,这个问题有没有简洁的解决方案? 和here是完整的代码。
阅读['Socket的()']的文件(http://docs.oracle.com/javase/7/docs/api/java/net /Socket.html#setSoTimeout(int))。 – RealSkeptic
你也可以通过NIO尝试非阻塞的,基于事件的IO。这样一个计时器和一个阅读只会是两种不同的事件。 – the8472