草庐IT

java - 应用程序需要很长时间才能终止

我们编写了一个控制台应用程序(将用作服务),它启动多个工作线程来处理通过mina传入的请求。当在特定网络端口上接收到停止信号时,应用程序离开主循环。这是停止服务的预期方式。这工作得很好,但是当收到停止信号时,应用程序的进程不会立即终止(最多需要5分钟)。我们通过日志消息验证了main函数已按预期快速离开,并且应用程序创建的所有线程也已终止。但应用程序继续运行。在离开主函数之前仍在运行的线程是:SignalDispatcher(java.lang.Thread)Finalizer(java.lang.ref.Finalizer$FinalizerThread)Abandonedconne

java - 在 Debug View 中,程序终止后,切换回 Eclipse 中的 Java View

我正在寻找一种方法,在我正在调试的应用程序结束后返回到Eclipse中的标准JavaView。这有可能实现吗?这是其他一些IDE(例如VisualStudio)中的默认行为,我更愿意那样做。不得不手动将View再次切换到初始View太无聊了:(谢谢 最佳答案 Eclipse是一个通用平台,您可以在其中拥有十几种不同的启动配置,因此此功能的良好且可用的“通用”实现并非易事。但是,有一个openbugreport对于此功能,最近有一些Activity,因此有可能在Eclipse3.7之后包含此功能。

java - 终结器(和 ReferenceQueue 的)是否在 JVM 终止时运行?

这个问题在这里已经有了答案:DoesJVM/GCcall`finalize()`onprogram/threadexit?(2个答案)关闭9年前。我知道youcan'tcountonfinalizers清理你的烂摊子(即免费资源),但我想知道-当JVM正常终止(System.exit()/没有剩余线程)时,java对象是否得到GC'ed/finalized?/p>编辑:因此,不能保证触发GC,因此finalize()也不能保证,但是ReferenceQueue会起作用吗?

java - 元素类型 "META"必须由匹配的结束标记 "</META>"终止

当我尝试使用Java(在GAE服务器中)解析XML文件时,有时会遇到以下错误:Parse:org.xml.sax.SAXParseException;lineNumber:10;columnNumber:3;Theelementtype"META"mustbeterminatedbythematchingend-tag"".但它并不是一直都在发生,有时它工作正常。解析xml文件的程序,我对它们没有问题。这是我要解析的XML文件:http://www.fulhamchronicle.co.uk/london-chelsea-fc/rss.xml任何帮助将不胜感激。谢谢。更新:感谢您的回答

java - 如果我不需要终止的任何值(value),我该如何终止流?

我有一个Stream,它在peek()方法中进行所有处理。我不需要流的任何结果,但我需要终端操作才能进行处理。当然,我可以使用count()(或任何其他操作)终止Stream,但这会产生误导,好像我需要Stream终止的一些结果。在这种情况下终止Stream的正确方法是什么?引用代码如下:Stream>graphHolders=cutSegment.stream().map(this::obtainCollectionFor);for(NetworkPartpart:edgesToNetworkParts.get(originalSegment)){part.integrate(cut

java - 在 Eclipse 中调试时停止代码执行而不终止线程

有没有一种方法可以在程序到达断点时停止调试(即我不想执行它之后的代码)而不停止整个应用程序服务器(我正在用Java编写应用程序,服务器是JBoss)?我只知道一种停止调试的方法-标题为Terminate的红色按钮会关闭服务器。那么还有其他的吗? 最佳答案 调试时,contextmenu给你强制返回。这会立即离开该方法并将您带回调用者。也可以使用Alt+Shift+F。 关于java-在Eclipse中调试时停止代码执行而不终止线程,我们在StackOverflow上找到一个类似的问题:

Java 程序意外终止,没有任何错误消息

我编写了一个java程序,它需要处理数千个文本文件(所有这些都需要加载到内存中)。它可以很好地处理多达123个输入文件,但是当我运行它来处理大约5000个文件时,它在路中间意外终止,没有给出任何错误消息/异常。谁能告诉我可能出了什么问题?我在具有2GBRAM的MacOSLeopard上使用jdk1.6。 最佳答案 鉴于这是您的程序,我建议您执行以下操作:首先,更改main方法,使所有事情都在报告所有未捕获异常的try/catchblock中完成;例如像这样:publicstaticvoidmain(String[]arghhhhh)

java - 与 Integer.MAX_VALUE 比较并使用 System.out.println 时,for 循环提前终止

当我运行这个类时,for循环似乎提前终止classTest{publicstaticvoidmain(String[]args){intresult=0;intend=Integer.MAX_VALUE;inti;for(i=1;i输出是:135...3117331175End:31177为什么到此为止?有趣的是,如果我在for循环中删除System.out.println(i),输出将是End:-2147483647。显然i中的值有wrappedround。我使用的Java版本是Java(TM)SERuntimeEnvironment(build1.6.0_16-b01)JavaHo

java - 即使在它们的父线程死亡或终止之后,子线程如何仍然执行?

这是我的两个类:publicclassFirstclass{publicstaticvoidmain(Stringargs[])throwsInterruptedException{System.out.println("Mainstart....");Secondclasst1=newSecondclass();t1.setName("FirstThread");Secondclasst2=newSecondclass();t2.setName("SecondThread");t1.start();t2.start();System.out.println("Mainclose...

java - 在程序终止的情况下如何关闭端口?

我在我的一个Java应用程序中使用Socket通信。据我所知,如果程序遇到任何异常终止,监听端口不会关闭并且程序无法重新启动,因为它报告“端口已打开..”我有办法处理这个问题吗?一般处理这个问题的方式是什么? 最佳答案 听起来您的程序正在监听套接字。通常,当您的程序退出时,操作系统会关闭所有可能打开的套接字(包括监听套接字)。但是,对于监听套接字,操作系统通常会在程序退出后将端口保留一段时间(几分钟),以便它可以处理任何未完成的连接尝试。您可能会注意到,如果您异常关闭程序,稍后再回来,它会正常启动。如果你想避免这个延迟时间,你可以使