Java for循环是锁定线程

Java for循环是锁定线程,java,Java,我希望以下代码永远打印文本: Thread t = new Thread() { public void run() { for(;;) { System.out.print("thread example"); } } }; t.start(); 但事实并非如此。它只是因为for循环而锁定。有人能告诉我为什么吗?print不会刷新缓冲区--您需要println,它会放入一个换行符并刷新缓冲区 本

我希望以下代码永远打印文本:

Thread t = new Thread()
{

    public void run()
    {

    for(;;)
        {
            System.out.print("thread  example");
        }
    }
};


t.start();

但事实并非如此。它只是因为for循环而锁定。有人能告诉我为什么吗?

print
不会刷新缓冲区--您需要
println
,它会放入一个换行符并刷新缓冲区


本质上,您正在打印一个束,但您正在打印到内存缓冲区,因此您看不到它。

print
不会刷新缓冲区--您需要
println
,它会放入新行并刷新缓冲区


基本上,您正在打印一组,但您正在打印到内存缓冲区中,所以您看不到它。

系统。out
是行缓冲的,在显示任何内容之前,您需要一些换行符。您的示例代码适用于我
系统。out
是行缓冲的,在显示任何内容之前,您需要一些换行符。您的示例代码适用于meThat似乎不正确,请查看文档:@Selim文档的哪一部分与之矛盾
PrintStream::print(String)
说它像
write(int)
那样写入字节,并说它刷新“字节是换行符,自动刷新已启用”。没错,我没有看到那个部分(
write(int)
)。然而,这个例子对我来说非常有效。实际上,它对我来说也很有效——缓冲区正在自行填充和刷新。它的缓冲量(以及缓冲到哪里)可能取决于系统,或者OP没有看到其他错误。这似乎不是真的,请查看文档:@Selim文档的哪一部分与之相矛盾
PrintStream::print(String)
说它像
write(int)
那样写入字节,并说它刷新“字节是换行符,自动刷新已启用”。没错,我没有看到那个部分(
write(int)
)。然而,这个例子对我来说非常有效。实际上,它对我来说也很有效——缓冲区正在自行填充和刷新。它的缓冲量(以及缓冲到哪里)可能取决于系统,或者OP没有看到其他一些bug。