当我开始学习Java时,有人告诉我不要在JavaEE应用程序中执行System.out.println。但是我真的不知道不这样做的原因是什么。我很清楚如果我们真的需要打印一个重要的,它应该使用日志框架记录。我真正想问的是:System.out.println是否有任何真正的危险?它会导致任何性能问题吗? 最佳答案 确实是性能问题。如果深入研究System.out的JDK源代码,您最终会在输出流上遇到一个synchronizedblock。这意味着如果您在源代码中放置足够多的println调用,整个代码库将有效地单线程运行,因为所有线
我一直在尝试将一些对象序列化到System.out(用于调试)。只要我打电话finalJsonSerializerserializer=newJsonSerializer();serializer.serialize(System.out,myObj);System.out.println("done");它打印出json,但是“完成”永远不会被打印出来。调试这些行,清楚地表明第3行已执行,但输出从未显示。这是jackson的错误,还是我做错了什么?编辑:publicclassJsonSerializer{privateObjectMappergetConfiguredObjectMa
我是solr的新手。我开发了一个使用solr进行索引的网站。我想处理在solr读写索引期间可能发生的超时。请指导我如何处理这些异常。我使用solrj作为solr客户端,我的网站和solr服务器在tomcat上运行。谢谢你! 最佳答案 提交和优化是为搜索者提供更新的操作。它们旨在在更新之后运行,而不是在查询之前运行。此外,它们是昂贵的操作,这就是您偶尔会出现超时的原因。除非您有特殊要求,否则我建议设置solrconfig.xml中的选项。顾名思义,它会根据可配置的标准自动发出提交,例如未提交文档的最大数量或添加文档后的最长时间。Opt
我今天无意中听到关于System.out.print()的争论。一个人声称,由于print()不包括终止\n,它写入的缓冲区最终将填满并开始丢失数据。另一个人声称他们一直在为他们所有的Java程序使用System.out.print()并且从未遇到过这个问题。第一人称对吗?如果stdout已满,System.out.print()是否可以开始阻止或丢弃数据?是否有导致此问题的代码示例? 最佳答案 当System.out.print使用的缓冲区填满时,输出将写入文件(或连接到程序标准输出流的终端或其他数据目标),导致一个空缓冲区。在不
System.getProperty("java.class.path")返回我程序的类路径。然而getClassLoader().getURLs()也为我提供了类路径(参见我的另一篇文章:howtousegetClassLoader)这两种方式有什么区别? 最佳答案 主要区别在于它们返回的内容:getClassLoader.getURLs()返回用于加载类和资源的URL的搜索路径。这包括指定给构造函数的原始URL列表,以及随后由addURL()方法附加的任何URL,请参阅linkSystem.getProperty("java.c
谁能解释一下为什么这个结构不起作用:while(fileInputStream.available()>0){fileOutputStream.write(fileInputStream.read());}这个工作得很好:while(fileInputStream.available()>0){intdata=fileInputStream.read();fileOutputStream.write(data);}对我来说它们是相同的,但第一个不会正确写入数据(将写入文件长度/数据的一半)。 最佳答案 您错误地使用了availabl
我有以下线程,它每200毫秒打印一个点:publicclassProgress{privatestaticbooleanthreadCanRun=true;privatestaticThreadprogressThread=newThread(newRunnable(){publicvoidrun(){while(threadCanRun){System.out.print('.');System.out.flush();try{progressThread.sleep(200);}catch(InterruptedExceptionex){}}}});publicstaticvoid
以下是java.lang.System类(JDK1.6版本)的代码publicfinalstaticPrintStreamout=nullPrintStream();//outissetto'null'privatestaticPrintStreamnullPrintStream()throwsNullPointerException{if(currentTimeMillis()>0){returnnull;}thrownewNullPointerException();}当我们在代码中编写System.out.println("Something");时,为什么即使'out'设置为'
所以我正忙着编写一个我认为是相对简单的“读取文件”程序。我遇到了很多编译错误,所以我开始尝试一次编译一行,看看我在哪里被清理了。这是我到目前为止的位置:importjava.nio.file.*;importjava.io.*;importjava.nio.file.attribute.*;importjava.nio.channels.FileChannel;importjava.nio.ByteBuffer;importstaticjava.nio.file.StandardOpenOption.*;importjava.util.Scanner;importjava.text.*
我的主线程创建了一个新线程当新线程调用System.exit(-1)时,我的主线程被关闭。如何处理退出代码并保持主线程Activity?附言。新线程会调用其他.jar文件中的一些方法,所以我不能修改它。 最佳答案 你不能。终止当前运行的Java虚拟机。该参数用作状态代码;按照惯例,非零状态代码表示异常终止。那是javadoc。因此该方法将终止整个JVM。不仅仅是线程.... 关于java-Java线程中的System.exit,我们在StackOverflow上找到一个类似的问题: