我有一个ScheduledThreadPoolExecutor似乎正在吃Exception.如果提交的Runnable抛出异常,我希望我的执行程序服务通知我.
例如,我希望下面的代码至少打印出IndexArrayOutOfBoundsException的stackTrace
threadPool.scheduleAtFixedRate(
new Runnable() {
public void run() {
int[] array = new array[0];
array[42] = 5;
}
},
1000,
1500L,
TimeUnit.MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)
作为一个附带问题.有没有办法为ScheduledThreadPoolExecutor编写一般的try catch块?
//////////原始问题的结尾//////////////
正如所建议的那样,以下装饰器运行良好
public class CatcherTask implements Runnable{
Runnable runMe;
public CatcherTask(Runnable runMe) {
this.runMe = runMe;
}
public void run() {
try {
runMe.run();
} catch (Exception ex){
ex.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我看到一个stackoverflow成员建议使用Thread.join()让"主"线程等待2个"任务"线程完成.
我会经常做一些不同的事情(如下所示),我想知道我的方法是否有任何问题.
final CountDownLatch latch = new CountDownLatch(myItems.length);
for (Item item : myItems) {
//doStuff launches a Thread that calls latch.countDown() as it's final act
item.doStuff(latch);
}
latch.await(); //ignoring Exceptions for readability
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个成熟的Java M-Tree实现 - 甚至是任何M-Tree实现(除了我发现的唯一实现)
http://en.wikipedia.org/wiki/M-tree
对于那些没有听说过M-tree的人(就像我2天前那样),M-Tree是一个搜索树,当它使用的密钥时,它可以检索"n个最近的条目"或"距离d内的所有条目".可以放在"度量空间"中(M代表度量).
我在网上找到了一个:https: //github.com/erdavila/M-Tree
如果需要,这个实现是可行的,但它不是Serializable,不提供"contains()"方法,并且它当前抛出一个断言错误(我已经弄清楚如何修复).
如果存在稍微更精细的实现,我想知道,因为这个数据结构看起来非常有用,我想找到一个规范的实现.
---添加了更多信息(以防止此问题被关闭)---
我的最终目标是一个Map,其中"public Value get(Key)"方法返回"最接近"的值,即使没有精确的Key匹配.因为我正在使用在度量空间上定义的键,我正在寻找MTree来处理此问题的"最接近"部分.
上面的实现是行不通的,因为(1)当相同的Key被放入两次时失败,(2)它不允许我删除Key,(3)它不允许我测试如果已插入密钥.