我应该如何在ThreadPoolExecutor中的beforeExecute和afterExecute钩子中访问类成员?

时间:2014-04-24 02:19:36

标签: java multithreading runnable threadpoolexecutor

我正在扩展ThreadPoolExecutor类。在其中我想在beforeExecute(Thread t,Runnable r)和afterExecute(Runnable r,Throwable t)中设置成员值。我不知道该怎么做。任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

据推测,您希望访问Runnable个实例的实例字段。要访问它们,您需要将Runnable向下转换为Runnable类的实际类,然后通过向下转发引用访问这些字段。或者更好的是,将字段设为私有,并通过引用上的getter / setter调用来访问它们。

如果你的Runnable是一个匿名的内部类,这可能会很尴尬。在这种情况下,您可能需要将其转换为命名类:嵌套,内部或顶级。

另一方面,如果您正在讨论static实现类的Runnable字段或方法,您可以像往常一样使用它们......前提是访问修饰符允许这样做