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。