通过某个库,我发现自己在一个实例上同时调用了这个函数两次(使用 Executors.newSingleThreadScheduledExecutor 返回的实现)。传递给第二个调用的 Runnable 似乎没有立即执行,也没有在下一个计划的插槽上执行,并且没有引发异常。如果我序列化这两个调用(通过在第二个调用者的调度调用之前放置一个断点来非常粗略且无意地这样做),那么第二个可运行对象将毫无问题地执行。
我是这个界面的新手,但这些调度功能似乎并不是为了可重入而设计的。但是我在描述这里应该发生什么的各种文档中找不到任何东西。