Stack Walking API কল স্ট্যাক ট্রাভার্স ও ইনফরমেশন এক্সট্র্যাক্ট করার জন্য একটি ফ্লেক্সিবল মেকানিজম প্রদান করে যা লেজি ম্যানNER-এ ফ্রেম ফিল্টার ও অ্যাক্সেস করতে দেয়। 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.getDeclaredMethod("test1", (Class[])null);
test1Method.invoke(null, (Object[]) null);
}
}
// Helper1 class
class Helper1 {
protected static void test1() {
Helper2.test2();
}
}
// Helper2 class
class Helper2 {
protected static void test2() {
List<StackFrame> stack = StackWalker.getInstance().walk(
(s) -> s.collect(Collectors.toList()));
for(StackFrame frame : stack) {
System.out.println(frame.getClassName() + " " + frame.getLineNumber() + " " + frame.getMethodName());
}
}
}
আউটপুট
Helper2 23 test2 Helper1 16 test1 StackWalkerTest 9 main