1
我正在擴展ThreadPoolExecutor類。在它內部,我想在beforeExecute(Thread t,Runnable r)和afterExecute(Runnable r,Throwable t)中設置一個成員值。我不知道如何去做。任何人都可以幫助我嗎?我應該如何訪問ThreadPoolExecutor中的beforeExecute和afterExecute掛鉤中的類成員?
我正在擴展ThreadPoolExecutor類。在它內部,我想在beforeExecute(Thread t,Runnable r)和afterExecute(Runnable r,Throwable t)中設置一個成員值。我不知道如何去做。任何人都可以幫助我嗎?我應該如何訪問ThreadPoolExecutor中的beforeExecute和afterExecute掛鉤中的類成員?
推測,您想要訪問Runnable
實例的實例字段。要訪問它們,您需要將Runnable
降格到Runnable
類的實際類別,然後通過向下引用訪問這些字段。或者更好的是,將這些字段設置爲私有,並通過引用上的getter/setter調用訪問它們。
如果您的Runnable
是匿名內部類,這可能會很尷尬。在這種情況下,您可能需要將其轉換爲命名類:嵌套,內部或頂級。另一方面,如果您正在討論Runnable
實現類的static
字段或方法,您可以像通常那樣使用它們,只要訪問修飾符允許這樣做即可。
我跑過你的帖子尋找解決方案,但這不起作用。 beforeExecute和afterExecute的Runnable參數實際上是一個java.util.concurrent.FutureTask,它不能轉換爲我的Runnable實現。我使用的是Java 7,所以我不知道ThreadPoolExecutor自發布後是否發生了更改。也許這就是爲什麼它不起作用的原因。 –
我遇到了完全相同的問題。我有我自己的類來實現'Runnable'。我認爲beforeExecute()是通知監聽器我的runnable現在開始執行的好時候。 – sockeqwe