[英]How to implement a multi-threaded timer task in java?
我正在尝试做的工作是在Java中模拟停止等待ARQ。初始设置是
ServerSocket
。 现在,主要部分是我基本上想做的事情。
如果确认到来的时间到了等待时间,然后进入下一个循环,则等待1秒
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 **/ }
这里的问题是,作为阻塞代码的该读取器将一直保持到输入可用为止。 但是我想要的是,如果一秒钟后读者没有找到输入,它就会跳出循环。 而且我们必须注意到该代码在单独的线程中。
那么,有没有解决这个问题的灵巧解决方案? 这是完整的代码。
您需要setSoTimeut:
ServerSocket socket = new ServerSocket(somePort);
Socket incoming = socket.accept();
incoming.setSoTimeout(1000);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.