据我从java.lang.Thread
文档以及stackoverflow上发布的其他问题(例如“如何通过线程访问Runnable对象? ”和“获取Runnable的当前实例”)了解,无法获得Runnable
嵌入对象的引用在一个Thread
。
具有这种可能性的一个场景是在实现一个方法时,它的签名不能被修改,因为我们正在覆盖另一个类或接口中定义的方法,并且需要根据Runnable
嵌入的类型执行不同的操作当前Thread
.
getRunnable
例如,如果我们在类中调用了一个方法,Thread
我们可以这样做:
if (Thread.currentThread().getRunnable() instanceof Type1) {
// do something...
} else {
// do something else...
}
这在我们希望确保方法中包含的操作仅由某些线程执行而不由其他线程执行的情况下也很有用。
所以我想知道,Java 开发人员决定不允许Runnable
从 a 获取实例是否有特定原因Thread
,或者它是否是值得通知的缺失功能?如果您认为该选择没有理由,但不值得将其通知为缺少功能,那么您会在上述场景中使用什么策略?