0

通过某个库,我发现自己在一个实例上同时调用了这个函数两次(使用 Executors.newSingleThreadScheduledExecutor 返回的实现)。传递给第二个调用的 Runnable 似乎没有立即执行,也没有在下一个计划的插槽上执行,并且没有引发异常。如果我序列化这两个调用(通过在第二个调用者的调度调用之前放置一个断点来非常粗略且无意地这样做),那么第二个可运行对象将毫无问题地执行。

我是这个界面的新手,但这些调度功能似乎并不是为了可重入而设计的。但是我在描述这里应该发生什么的各种文档中找不到任何东西。

4

1 回答 1

0

好吧,小测试用例不会重现问题,所以我没有理由相信这个函数是不可重入的。真正解决问题的是从请求时间到服务器启动的所有这些。还有一些其他迹象,比如我在 OP 中提到的断点临时修复,这表明我的堆栈中某处存在一些可怕的时间问题。

于 2012-10-24T23:09:29.593 回答