Stack Walking API는 호출 스택을 탐색하고 정보를 추출하는 유연한 메커니즘을 제공하여 지연 방식으로 프레임을 필터링하고 액세스할 수 있도록 해줍니다. StackWalker 클래스는 Stack Walking API의 진입점입니다. 스택 추적은 특정 시점의 호출 스택 을 나타내며, 여기서 각 요소는 메서드 호출 을 나타냅니다. 여기에는 스레드 시작부터 생성까지의 모든 호출이 포함됩니다.
아래 예에서는 StackWalker API를 사용하여 현재 스레드의 모든 스택 프레임을 인쇄/표시할 수 있습니다.
예import java.lang.StackWalker.StackFrame; import java.lang.reflect.Method; import java.util.List; import java.util.stream.Collectors; public class StackWalkerTest { public static void main(String args[]) throws Exception { Method test1Method = Helper1.class.<strong>getDeclaredMethod</strong>("test1", (Class<!--?-->[])null); test1Method.invoke(null, (Object[]) null); } } <strong>// Helper1 class </strong>class Helper1 { protected static void test1() { Helper2.test2(); } } <strong>// Helper2 class</strong> class Helper2 { protected static void test2() { <strong>List<StackFrame></strong> stack = <strong>StackWalker.getInstance().walk</strong>((s) -> s.<strong>collect</strong>(Collectors.toList())); for(<strong>StackFrame </strong>frame : stack) { System.out.println(frame.<strong>getClassName()</strong> + " " + frame.<strong>getLineNumber()</strong> + " " + frame.<strong>getMethodName()</strong>); } } }
<strong>Helper2 23 test2 Helper1 16 test1 StackWalkerTest 9 main</strong>
위 내용은 Java 9에서 현재 스레드의 모든 스택 프레임을 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!