java - 如何为PrintWriter设置TimerTask?

标签 java timertask

我使用 TimerTask 每 3 秒发送消息,但只发送一次。

 public static void main(String[] args) throws IOException {
            soc = new Socket("localhost", 12345);
            out = new PrintWriter(soc.getOutputStream(), true);
            send();
        }
        private static void send() {
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    out.println("fetewtewwefwfewf egreg \n");
                    out.flush();
                    InputStream is;
                    try {
                        is = soc.getInputStream();
                        DataInputStream dis = new DataInputStream(is);
                        while (!soc.isClosed()) {
                            long value = dis.readLong();
                            System.out.println(value);
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }, 3000);
        }
    }

最佳答案

您正在使用timer.schedule(TimerTask task, long delay),它仅安排任务执行一次。对于重复执行,请使用timer.scheduleAtFixedRate(TimerTask任务,长延迟,长周期),即将代码更改为

 timer.scheduleAtFixedRate(new TimerTask() {
     ....
 }, 0, 3000);

关于java - 如何为PrintWriter设置TimerTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15518589/

相关文章:

java - Easymock.expect 抛出 IllegalStateException

Java Map<Entity1, Entity2> 使用 JPA 映射到数据库

java - 抽屉布局类未找到错误

java - 如何在Java中命名线程池的线程

java - 在JAVA循环中每x秒使用不同参数执行一个方法

java - 使用 IcyStreamMeta 从 SHOUTcast 获取元数据

java - 在 Android 中使用单个计时器与多个计时器来调度 TimerTasks

java - 我是否为每个实例变量编写了 javadoc 注释?

docker - Docker-如何仅在集群中的所有其他容器中的一个容器中执行调度任务(cron)?

java - TimerTask 的问题