@@ -27,7 +27,7 @@ public final class TaskMonitoring {
27
27
28
28
static void start (ThreadFactory threadFactory ) {
29
29
monitor = new TaskMonitor ();
30
- threadFactory .newThread (monitor );
30
+ threadFactory .newThread (monitor ). start () ;
31
31
LCCore .get ().toClose (monitor );
32
32
}
33
33
@@ -103,11 +103,19 @@ private static void check(TaskWorker worker) {
103
103
long seconds = (now - start ) / (1000000L * 1000 );
104
104
if (seconds < SECONDS_BEFORE_TO_PUT_TASK_ASIDE ) return ;
105
105
if (seconds < SECONDS_BEFORE_KILL_TASK ) {
106
- Threading .logger .warn ("Task " + task + " is running since " + seconds + " seconds ! put it aside and start a new thread" );
106
+ StringBuilder s = new StringBuilder (1024 );
107
+ s .append ("Task " ).append (task ).append (" is running since " ).append (seconds )
108
+ .append (" seconds ! put it aside and start a new thread, current stack:\r \n " );
109
+ DebugUtil .createStackTrace (s , worker .thread .getStackTrace ());
110
+ Threading .logger .warn (s .toString ());
107
111
worker .manager .putWorkerAside (worker );
108
112
return ;
109
113
}
110
- Threading .logger .error ("Task " + task + " is running since " + seconds + " seconds ! kill it." );
114
+ StringBuilder s = new StringBuilder (1024 );
115
+ s .append ("Task " ).append (task ).append (" is running since " ).append (seconds )
116
+ .append (" seconds ! kill it! current stack:\r \n " );
117
+ DebugUtil .createStackTrace (s , worker .thread .getStackTrace ());
118
+ Threading .logger .error (s .toString ());
111
119
worker .manager .killWorker (worker );
112
120
}
113
121
0 commit comments