java 监控方法执行的状态,该如何处理

java 监控方法执行的状态
现在需要做个如下功能:
需求描述:前台页面发出一个请求给后台,后台接到请求会去执行N个方法(假设有10个方法)。与此同时,前台会每隔5秒,再次请求后台,查询目前正在执行哪个方法?并将正在执行的方法,提示个前台:某某某方法正在执行!该功能如何实现。注(项目是javase的,不是web项目。)
------解决方案--------------------
随便说说,弄个公共变量,1-10分别代表你执行的那10个方法,进这10个方法的时候给这个变量赋上相应的值,请求后台的时候看这个变量的值就知道当前在哪个方法了
------解决方案--------------------
后台利用线程执行,提供一个公共属性供其他线程查询不就行了。
------解决方案--------------------
请求响应一个线程中N个方法时,每隔5s,向前台推送当前执行哪个方法(未执行方法覆盖掉已执行方法名称存在一个变量中)。
------解决方案--------------------
package com.synnex.just.test;

public class SomeMethod {
    
    private  String currentMethodName;
    
    public void m1(){
setCurrentMethodName("m1");
System.out.println("m1 executing .....");
    }
    
    public void m2(){
setCurrentMethodName("m2");
System.out.println("m2 executing .....");
    }
    
    
    public void m3(){
setCurrentMethodName("m3");
System.out.println("m3 executing .....");
    }
    
    public void m4(){
setCurrentMethodName("m4");
System.out.println("m4 executing .....");
    }

    public String getCurrentMethodName() {
        return currentMethodName;
    }

    
    public void setCurrentMethodName(String currentMethodName) {
        this.currentMethodName = currentMethodName;
    }

}
--------------------------------------------------------------------------------------------------------------------------------

package com.synnex.just.test;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class SomeThread extends Thread {

    private SomeMethod m ;
    
    public SomeThread(SomeMethod m){
this.m=m;
    }
    
    @Override
    public void run() {
      
Class<?> classz=null;
try {
    classz = Class.forName("com.synnex.just.test.SomeMethod");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
Method[] declaredMethods = classz.getDeclaredMethods();
while(true){
    for(Method method : declaredMethods){
if(!method.getName().startsWith("m")){
    continue;
}
try {
    Thread.currentThread().sleep(2000);
    method.invoke(m, null);
} catch (IllegalArgumentException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (InvocationTargetException e) {
    e.printStackTrace();
} catch (InterruptedException e) {
    e.printStackTrace();
       
}
    }
    
}

    }
}

-----------------------------------------------------------------------------------------------------------------------------


package com.synnex.just.test;

public class Main {

    /**
     * @param args
     * @throws InterruptedException 
     */
    public static void main(String[] args) throws InterruptedException {
       SomeMethod  m = new SomeMethod();
       SomeThread t = new SomeThread(m);
       t.start();       

       while(true){
   Thread.sleep(5000);
   System.out.println("Current method"+m.getCurrentMethodName());
       }
    }

}


不知道能不能满足楼主要求。