2011-01-05 1 views
3

Я уверен, что я мог бы что-то взломать, что позволило бы мне разобраться в этом, но я надеюсь, что есть готовое решение, которое мне просто не хватает. Я читал документы, но ничего не видел.Есть ли простой способ рассказать, какие задачи выполняет Java-исполнитель в данный момент?

У меня есть конкретное приложение, которое использует ThreadPoolExecutor при поддержке DelayQueue, хотя я не уверен, что это важно.

Спасибо!

ответ

6

Я не думаю, что есть надежный способ сделать это. Если вы хотите подсчеты, доступны доступные методы (getTaskCount()/getCompletedTaskCount()). Если вам нужны реальные задачи, то AFAIK вам нужно вручную, чтобы отслеживать задачи, переопределяя beforeExecute() и afterExecute() одним способом.

+0

Очень прямолинейно и напрямую отвечает на мой вопрос. Благодаря! –

10

Один простой подход: обернуть свои задачи с кодом, который будет вызывать обратный вызов начало новой задачи сигнализации, проходя по всем данным вы хотите, чтобы:

interface StartTaskWatcher { 
    void taskStarted(Object data); 
} 

class StartTaskSignalingWrapper implements Runnable { 
    private final Runnable task; 
    private final String taskDescription; 
    private final StartTaskWatcher startTaskWatcher; 

    StartTaskSignalingWrapper(Runnable task, String taskDescription, StartTaskWatcher startTaskWatcher) { 
     this.task = task; 
     this.taskDescription = taskDescription; 
     this.startTaskWatcher = startTaskWatcher; 
    } 

    public void run() { 
     startTaskWatcher.taskStarted(taskDescription); 
     task.run(); 
    } 
} 
+0

Хорошее предложение, хороший код, спасибо! –

1

ли вы на самом деле нужно знать во время выполнения, или просто для отладки?

Если вы просто отлаживаете, рассмотрите возможность просмотра приложения JVisualVM (установленного в каталоге «bin» JDK). Он позволяет динамически проверять все выполняемые потоки, чтобы он мог предоставить вам некоторое представление.

(The JVisualVM также может выполнять профилирование процессора/памяти, с выполнением & горячих точек распределения, и показывает сбор мусора активности в режиме реального времени.)

+0

Мне действительно нужно это во время выполнения, для мониторинга и устранения неполадок. Хорошая информация, хотя, спасибо! –

Смежные вопросы