当前位置: 首页 > 知识库问答 >
问题:

如何用java实现一个多线程的定时器任务?

马臻
2023-03-14

我想做的工作是在初始设置中模拟一个停止和等待java.TheARQ

    < li >创建一个< code >服务器套接字。 < li >对于每个接受的客户端,使用ServerSocket.accept为该客户端创建一个新线程。

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

>

  • 向客户端发送一个数据包。(或一些数据给客户端)
  • 等待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秒钟后阅读器没有找到输入,它就跳出循环。我们必须注意到这段代码在一个单独的线程中。

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

  • 共有1个答案

    阮喜
    2023-03-14

    您需要设置时间:

        ServerSocket socket = new ServerSocket(somePort);
    
        Socket incoming = socket.accept();
        incoming.setSoTimeout(1000);
    
     类似资料:
    • 本文向大家介绍java实现多线程之定时器任务,包括了java实现多线程之定时器任务的使用技巧和注意事项,需要的朋友参考一下 在Java中Timer是java.util包中的一个工具类,提供了定时器的功能。我们可以创建一个Timer对象,然后调用其schedule方法在某个特定的时间去执行一个特定的任务。并且你可以让其以特定频率一直执行某个任务,这个任务是用TimerTask来描述的,我们只需要将要

    • 我使用Timer和TimerTask为聊天应用程序长轮询新消息。我想研究两种“稍微”不同的可能性: 1:计时器声明为局部变量 *问题:每次调用该方法时,我都会看到创建了一个新线程,[Timer-1]、[Timer-2]等等。。在Eclipse调试窗口中,即使在getLastMessages(..)之后,它们似乎都在运行完成运行并向客户端返回值。如果计时器实际使用线程,并且在几次事务之后,服务器最终

    • 我正在尝试编写一个简短的Java程序,它使用多个线程来创建计时器。当计时器达到7秒或15秒时,它将打印一条消息。 我需要创建一个共享计数器。时间打印线程将计数器递增1,并从执行开始每秒打印其值。一个消息打印线程每15秒打印一条消息,另一个消息打印线程每7秒打印一条不同的消息。这两个线程需要在不修改时间打印线程的情况下完成。 所有这些线程都需要共享每秒更新的计数器对象。每次更新计数器对象时,时间打印

    • 本文向大家介绍Java countDownLatch如何实现多线程任务阻塞等待,包括了Java countDownLatch如何实现多线程任务阻塞等待的使用技巧和注意事项,需要的朋友参考一下 我这里需要通过多线程去处理数据,然后在所有数据都处理完成后再往下执行。这里就用到了CountDownLatch。把countdownlatch作为参数传入到每个线程类里,在线程中处理完数据后执行countdo

    • 问题内容: 我是python和线程的新手。我已经编写了充当网络爬虫的python代码,并在网站中搜索特定的关键字。我的问题是,如何使用线程同时运行类的三个不同实例。当实例之一找到关键字时,所有三个实例都必须关闭并停止爬网。这是一些代码。 如何使用线程让Crawler同时执行三个不同的爬网? 问题答案: 似乎没有一种(简单的)方法可以终止Python中的线程。 这是一个并行运行多个HTTP请求的简单

    • 本文向大家介绍用Python实现一个简单的多线程TCP服务器的教程,包括了用Python实现一个简单的多线程TCP服务器的教程的使用技巧和注意事项,需要的朋友参考一下  最近看《python核心编程》,书中实现了一个简单的1对1的TCPserver,但是在实际使用中1对1的形势明显是不行的,所以研究了一下如何在server端通过启动不同的线程(进程)来实现每个链接一个线程。 其实python在类的