Как насчет чего-то вроде:
Map<Thread,StackTraceElement[]> stackTraceMap = Thread.getAllStackTraces();
for (Thread t : stackTraceMap.keySet())
{
if ("main".equals(t.getName()))
{
StackTraceElement[] mainStackTrace = stackTraceMap.get(t);
for (StackTraceElement element : mainStackTrace)
{
System.out.println(element);
}
}
}
Это даст вам что-то вроде
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:231)
java.lang.Thread.join(Thread.java:680)
com.mypackage.Runner.main(Runner.java:10)
Основной поток, вероятно, не гарантируется для вызова "main"
, хотя - может быть лучше проверить элемент трассировки стека, который содержит (main
Редактировать Если основной поток завершился, это не хорошо!