小编Iva*_*van的帖子

ThreadPools中的异常处理

我有一个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)

java exception-handling threadpool

42
推荐指数
3
解决办法
2万
查看次数

CountDownLatch的latch.await()方法与Thread.join()

我看到一个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 multithreading

7
推荐指数
2
解决办法
4137
查看次数

寻找成熟的M-Tree实现

我正在寻找一个成熟的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)它不允许我测试如果已插入密钥.

java tree data-structures

6
推荐指数
0
解决办法
783
查看次数