java - 为什么 PrintWriter 不能与 Thread.sleep() 一起使用

标签 java sleep

PrintWriter 工作(它写入外部文件),直到我添加 Thread.sleep(100); 行。然后代码仍然可以正常编译,并且它继续写入控制台,但不会打印到外部文件。但我不明白为什么?

import java.io.*; 
import java.io.PrintWriter;
import java.io.File;
import javax.swing.*;

public class RecordMouse {
  public static void main(String[] args) throws InterruptedException{

    String line = "";

    // string for filename
    String filename = System.currentTimeMillis() + "out.txt";
    // create file
    File file = new File(filename);
    // create writer
    PrintWriter printWriter = null;

    try
    {
        printWriter = new PrintWriter(file);

        while(true){
            //Thread.sleep(100);
            System.out.println(System.currentTimeMillis() + " hi \n");
            printWriter.println(System.currentTimeMillis() + " hi");
        }

    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
    }
    finally
    {
        if ( printWriter != null ) 
        {
            printWriter.close();
        }
    }
  }
}

最佳答案

在您的情况下, sleep 的区别在于它会减慢写入频率,并且需要一段时间才能将写入刷新到文件中。通过删除 sleep ,您将导致写入刷新发生得更早。将 sleep 时间更改为较小的值(例如 5 而不是 100)或等待更长的时间,然后查看文件是否被覆盖。

关于java - 为什么 PrintWriter 不能与 Thread.sleep() 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53198135/

相关文章:

java - 使用调度程序或 Thread.Sleep 的线程延迟

bash shell 脚本 sleep 或 cronjob 哪个更好?

c# - 为什么语言不在核心集成依赖注入(inject)?

java - 在没有密码学库的情况下在 Java 中实现 DSA 的问题

java - 如何在 Maven 中创建 zip 目标而不是 jar?

swift - UILabel.text 在最后一次 For 循环执行之前没有改变

.net - 在.NET控制台应用程序中,防止Windows sleep /休眠

c - 当线程处于 sleep 状态并且需要优雅地关闭时,使用 pthread_join、pthread_exit 或 pthread_cancel 做什么?

java - Eclipselink 异常 : Isolated Data is not currently supported

java - JDIC 的 64 位版本何时可用?