Tag: 终止

知道所有线程何时完成并处理exception

我正在使用Executor框架使用线程池启动多个线程,即newFixedThreadPool。 我使用threadpool.submit(aThread)来提交要由线程池执行的作业,这很好但是我需要确定所有线程何时完成,以便我可以继续进行其他处理。 我看着使用Future.get()阻塞直到线程完成这里的问题是它阻塞直到结果可用。 我还看到在发出关闭后继续调用isTerminated()方法然后调用sleep来检查是否所有线程都已完成,但这对我来说似乎并不整齐。 还有另一种清洁方式吗? 此外,如果在任何一个线程中引发exception,我希望能够终止所有其他正在运行的线程,并且还要阻止池中任何排队的线程启动。 这样做的最佳机制是什么? 期待听到您的回复 TIA

Rserve服务器:如何终止阻塞实例(eval永远消失)?

我需要以multithreading的方式执行R eval ,这是Rserve提供的很好的东西。 但是,如果一个实例的eval需要太长时间,我需要能够关闭计算阻塞eval的实例。 就我测试而言,给定的实例将拒绝关闭,直到eval完成(显然,它需要在再次侦听之前获取结果)。 所以这是我的问题: 有没有办法在阻塞实例上获取java句柄(类似于Process对象),这样我就可以强制终止/终止eval(比如process.destroy() )? 换句话说,当我要求eval(创建连接,抛出命令)时,如何通过java在正在处理的eval和与之相关的Rsere实例之间建立关系? 或者我是否错过了一些已经允许处理这种需求的Rserve? 注意:我已经尝试通过serverEval()而不是在主实例上运行计算的常规eval运行所有(所有evals),但这当然不满意,因为它只使用一个进程(主要的一个) )。 我可以杀死的那个,但我的主要目标是能够单独关闭一个阻塞的eval,在一个单独的实例上运行。 而且,自然地,保持我的8个CPU内核的优势,也就是说,保持并行性。 除此之外没有必要使用Rserve(在这种情况下JRI引擎就足够了)。 注意:我想避免这种事情( 线程 ),在不同的端口上处理主服务器本身的几个实例。 那不是一个选择。 我已经尝试获取有关Rserve邮件列表的信息,但尚未得到答复。 我希望自己能够清楚地在这里得到答案或有用的评论。 如果没有,请询​​问详情。 非常感谢提前。 编辑:我还测试了RCaller ,它处理了R需要的尽可能多的实例,但是,因为它将结果写入XML文件以便稍后从java端解析(不像Rserve那样真正使用通信协议),它也是我必须执行的速度慢…

处理exception的Java程序退出

假设我有一个打开数据库连接的Java应用程序。 通常我会在finally块中添加一个connection.close(),但是在kill操作或任何其他exception终止的情况下不会执行此块,是吗? 作为程序员,在应用程序退出之前是否可以正确关闭连接,是否还有其他预防措施?

终止Java Midi输出

我写了这个简短的程序来学习javax.sound.midi系统。 这是使用Java 6.输出是预期的(由Sequencer事件触发的一系列System.out.println()字符串)但问题是,在最后一个声音效果之后,程序保持循环并且没有按预期终止。 有谁能说出如何解决这个问题? 谢谢你的帮助: import javax.sound.midi.MidiEvent; import javax.sound.midi.ShortMessage; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.ControllerEventListener; import javax.sound.midi.Sequencer; import javax.sound.midi.MidiSystem; import javax.sound.midi.Sequence; import javax.sound.midi.Track; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MidiUnavailableException; class MySound { public static MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) { MidiEvent event = null; try { ShortMessage a = new ShortMessage(); a.setMessage(comd, chan, […]