2011-01-05 35 views

回答

6

我不認爲這是一個可靠的方法來做到這一點。如果你想計數有方法可用(getTaskCount()/ getCompletedTaskCount())哪些幫助。如果你需要實際的任務,那麼AFAIK你需要手動跟蹤任務,重寫beforeExecute()和afterExecute()是一種方法。

+0

非常直接,直接回答我的問題。謝謝! – 2011-01-06 00:37:33

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

好的建議,好的代碼,謝謝! – 2011-01-06 00:39:19

1

你確實有必要知道在運行時,或只是爲了調試?

如果您只是在調試,請考慮查看JVisualVM應用程序(安裝在JDK的'bin'目錄中)。它可以讓你動態地檢查所有正在運行的線程,所以它應該能夠爲你提供一些見解。

(該JVisualVM還可以進行CPU /內存分析,以執行&分配的熱點,並顯示實時垃圾收集活動。)

+0

我實際上在運行時需要它,用於監視和故障排除。好消息,謝謝! – 2011-01-06 00:37:56

相關問題