Threadオブジェクトからスタックトレースを取得できるのでそれを使用する。
System.out.println(java.util.Arrays.stream(Thread.currentThread().getStackTrace())
.skip(1).limit(4).map(t -> t.getClassName() + "." + t.getMethodName()).collect(java.util.stream.Collectors.joining(",")));
skip(1)をかましているのは結果にgetStackTraceメソッド呼び出しも含まれているため。