Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回到原始类而不保留当前类_Java_Multithreading_Concurrency_Timer_Timertask - Fatal编程技术网

Java 返回到原始类而不保留当前类

Java 返回到原始类而不保留当前类,java,multithreading,concurrency,timer,timertask,Java,Multithreading,Concurrency,Timer,Timertask,我有一个类(MC),里面有一个计时器,可以多次执行一项任务。完成后,我想回到原来的类(主),而不保留MC类 若我从MC调用方法(afterFinishingMC),我担心会出现递归堆栈堆积 这是我的代码: public class Menu { private mc = new MC(); public void main(String[] args) { mc.begin(); } Public void afterFinishingMC()

我有一个类(MC),里面有一个计时器,可以多次执行一项任务。完成后,我想回到原来的类(主),而不保留MC类

若我从MC调用方法(afterFinishingMC),我担心会出现递归堆栈堆积

这是我的代码:

public class Menu {
    private mc = new MC();

    public void main(String[] args) {
        mc.begin();
    }

    Public void afterFinishingMC() {
        //code here
    }
}

//MC class
import java.util.Timer;
import java.util.TimerTask;

public class MC {
    public Timer timer = new Timer();

    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            //code here
        }
    };

    public void begin {
        timer.schedule(task, 1000, 1000);
    }

    public void interrupt {
        timer.cancel(); 
    }
}

您的代码甚至可以编译,请编辑它,但您可以使用观察者模式。首先,我在这里没有看到递归。其次,计时器在单独的线程中运行。请更具体地说明你关心的是什么。纳科克:你为什么要编译它?原始代码很长,但这是为了让您了解问题。Aurand:我知道计时器在单独的线程中运行。我的问题是,如果我从MC内部调用afterFinishingMC(),它将等待afterFinishingMC()完成,然后返回MC。我不想返回MC。完成GMC()后,
有什么事要做?为什么这很重要?它在另一个类中定义,不引用MC。您能提供一个更好的代码片段,显示您实际要做的事情吗?