繁体   English   中英

如何在Java中实现多线程计时器任务?

[英]How to implement a multi-threaded timer task in java?

我正在尝试做的工作是在Java中模拟停止等待ARQ。初始设置是

  1. 创建一个ServerSocket
  2. 对于每个接受的客户端,使用ServerSocket.accept为该客户端创建一个新线程。

现在,主要部分是我基本上想做的事情。

  1. 发送数据包给客户端。 (或向客户端发送一些数据)
  2. 如果确认到来的时间到了等待时间,然后进入下一个循环,则等待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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM