我们编写了一个控制台应用程序(将用作服务),它启动多个工作线程来处理通过mina传入的请求。当在特定网络端口上接收到停止信号时,应用程序离开主循环。这是停止服务的预期方式。这工作得很好,但是当收到停止信号时,应用程序的进程不会立即终止(最多需要5分钟)。我们通过日志消息验证了main函数已按预期快速离开,并且应用程序创建的所有线程也已终止。但应用程序继续运行。在离开主函数之前仍在运行的线程是:SignalDispatcher(java.lang.Thread)Finalizer(java.lang.ref.Finalizer$FinalizerThread)Abandonedconne
我正在寻找一种方法,在我正在调试的应用程序结束后返回到Eclipse中的标准JavaView。这有可能实现吗?这是其他一些IDE(例如VisualStudio)中的默认行为,我更愿意那样做。不得不手动将View再次切换到初始View太无聊了:(谢谢 最佳答案 Eclipse是一个通用平台,您可以在其中拥有十几种不同的启动配置,因此此功能的良好且可用的“通用”实现并非易事。但是,有一个openbugreport对于此功能,最近有一些Activity,因此有可能在Eclipse3.7之后包含此功能。
这个问题在这里已经有了答案:DoesJVM/GCcall`finalize()`onprogram/threadexit?(2个答案)关闭9年前。我知道youcan'tcountonfinalizers清理你的烂摊子(即免费资源),但我想知道-当JVM正常终止(System.exit()/没有剩余线程)时,java对象是否得到GC'ed/finalized?/p>编辑:因此,不能保证触发GC,因此finalize()也不能保证,但是ReferenceQueue会起作用吗?
当我尝试使用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任何帮助将不胜感激。谢谢。更新:感谢您的回答
我有一个Stream,它在peek()方法中进行所有处理。我不需要流的任何结果,但我需要终端操作才能进行处理。当然,我可以使用count()(或任何其他操作)终止Stream,但这会产生误导,好像我需要Stream终止的一些结果。在这种情况下终止Stream的正确方法是什么?引用代码如下:Stream>graphHolders=cutSegment.stream().map(this::obtainCollectionFor);for(NetworkPartpart:edgesToNetworkParts.get(originalSegment)){part.integrate(cut
有没有一种方法可以在程序到达断点时停止调试(即我不想执行它之后的代码)而不停止整个应用程序服务器(我正在用Java编写应用程序,服务器是JBoss)?我只知道一种停止调试的方法-标题为Terminate的红色按钮会关闭服务器。那么还有其他的吗? 最佳答案 调试时,contextmenu给你强制返回。这会立即离开该方法并将您带回调用者。也可以使用Alt+Shift+F。 关于java-在Eclipse中调试时停止代码执行而不终止线程,我们在StackOverflow上找到一个类似的问题:
我编写了一个java程序,它需要处理数千个文本文件(所有这些都需要加载到内存中)。它可以很好地处理多达123个输入文件,但是当我运行它来处理大约5000个文件时,它在路中间意外终止,没有给出任何错误消息/异常。谁能告诉我可能出了什么问题?我在具有2GBRAM的MacOSLeopard上使用jdk1.6。 最佳答案 鉴于这是您的程序,我建议您执行以下操作:首先,更改main方法,使所有事情都在报告所有未捕获异常的try/catchblock中完成;例如像这样:publicstaticvoidmain(String[]arghhhhh)
当我运行这个类时,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
这是我的两个类: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应用程序中使用Socket通信。据我所知,如果程序遇到任何异常终止,监听端口不会关闭并且程序无法重新启动,因为它报告“端口已打开..”我有办法处理这个问题吗?一般处理这个问题的方式是什么? 最佳答案 听起来您的程序正在监听套接字。通常,当您的程序退出时,操作系统会关闭所有可能打开的套接字(包括监听套接字)。但是,对于监听套接字,操作系统通常会在程序退出后将端口保留一段时间(几分钟),以便它可以处理任何未完成的连接尝试。您可能会注意到,如果您异常关闭程序,稍后再回来,它会正常启动。如果你想避免这个延迟时间,你可以使