Я расширяю класс ThreadPoolExecutor. Внутри него я хочу установить значение члена в beforeExecute (Thread t, Runnable r) и afterExecute (Runnable r, Throwable t). Я не уверен, как это сделать. Может ли кто-нибудь помочь мне с этим?
Как мне получить доступ к членам класса в хуках beforeExecute и afterExecute в ThreadPoolExecutor?
Ответы (1)
Предположительно, вы хотите получить доступ к полю экземпляра ваших Runnable
экземпляров. Чтобы получить к ним доступ, вам нужно будет преобразовать Runnable
в фактический класс вашего класса Runnable
, а затем получить доступ к полям через ссылку вниз. Или, что еще лучше, сделайте поля приватными и получайте к ним доступ через вызовы getter/setter по ссылке.
Это может быть неудобно, если ваш Runnable
является анонимным внутренним классом. В этом случае вам может понадобиться превратить его в именованный класс: вложенный, внутренний или верхний уровень.
С другой стороны, если вы говорите о static
полях или методах класса реализации Runnable
, вы можете просто использовать их, как обычно... при условии, что модификаторы доступа разрешают это.
Runnable
. Я подумал, что beforeExecute() будет хорошей точкой для уведомления слушателя о том, что мой runnable начинает свое выполнение.
- person sockeqwe; 15.08.2014