通过某些库,我发现自己在一个实例上同时调用此函数两次(使用Executors.newSingleThreadScheduledExecutor返回的实现)。传递给第二个调用的Runnable似乎不会立即执行,也不会在下一个调度的插槽上执行,也不会引发异常。如果我序列化两个调用(通过在第二个调用者的调度调用之前放置一个断点来非常粗略和无意地执行此操作),则执行第二个runnable没有问题。
我是这个界面的新手,但看起来这些调度功能似乎不是可重入的。但我在各种文档中找不到任何描述应该发生什么的文件。
答案 0 :(得分:0)
嗯,小测试用例不能重现问题,所以我没有理由相信该功能不可重入。实际修复问题的方法是将所有这些从请求时间移除到服务器启动。还有一些其他的迹象,比如我在OP中提到的断点临时修复,指出了一些可怕的时间问题,在我的堆栈中的某个地方。