gpt4 book ai didi

java - java中如何实现多线程定时器任务?

转载 作者:行者123 更新时间:2023-12-01 11:30:43 25 4
gpt4 key购买 nike

我想做的工作是在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
    **/

    }

    这里的问题是,这个阅读器作为阻塞代码将一直保留,直到输入可用。但我想要的是,如果 1 秒后阅读器没有找到输入,它就会跳出循环。我们必须注意到这段代码位于一个单独的线程中。

那么,这个问题有什么巧妙的解决方案吗?和here是完整的代码。

最佳答案

您需要设置SoTimeut:

    ServerSocket socket = new ServerSocket(somePort);

Socket incoming = socket.accept();
incoming.setSoTimeout(1000);

关于java - java中如何实现多线程定时器任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30421885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com