Java 尝试在调用自定义异常后挂起线程

Java 尝试在调用自定义异常后挂起线程,java,multithreading,events,custom-exceptions,Java,Multithreading,Events,Custom Exceptions,这是我一直在做的学校作业。我一直和我的导师在一起,他一直在帮助我,但我显然缺少一些东西。该程序接受一个参数“-f filename.txt”,在该文件名中有一个类似的列表 FansOn, 2000 FansOff, 4000 Bell, 2000,5 该程序使用这些名称并使用反射创建类,然后调用生成的类(FansOn等)的action()方法。它为每个类创建一个线程,然后启动该线程,从而生成一条类似“Fan is on”的消息。在其中两个事件中,PowerOut和windowblocking,

这是我一直在做的学校作业。我一直和我的导师在一起,他一直在帮助我,但我显然缺少一些东西。该程序接受一个参数“-f filename.txt”,在该文件名中有一个类似的列表

FansOn, 2000
FansOff, 4000
Bell, 2000,5
该程序使用这些名称并使用反射创建类,然后调用生成的类(FansOn等)的action()方法。它为每个类创建一个线程,然后启动该线程,从而生成一条类似“Fan is on”的消息。在其中两个事件中,PowerOut和windowblocking,它抛出一个自定义异常ControllerException,然后需要抓取一个名为
GreenhouseControls
的对象,并将其序列化到一个名为
dump.out
的文件中,以供以后检查。我遇到的问题是能够调用我的
ghcSuspend()
方法,该方法应该在异常调用之后立即挂起所有事件。事实上,在这一点上,我的程序只是产生了大量的堆栈溢出问题。我不知道我是否应该在这里发布我的全部代码,因为我显然不想让参加我课程的其他人仅仅获得大部分代码,所以我不知道我应该发布什么来让你们理解我的问题


因此,在我的
main()
方法中,我创建了一个名为gc的
GreenhouseControls
对象。GreenhouseControls是主类文件的名称。最后,我需要在我的自定义异常中使用这个gc对象,它是在我的events.class文件中定义和捕获的。因为我的对象是在run方法中创建的,所以我基本上必须通过一个接一个地调用的每个方法传递它,直到它到达我需要处理它的最终方法为止。我遗漏了一些基本的OO概念,这些概念最终创建了一个无限循环,溢出了我的堆栈。所以我们现在都很好。

我希望我知道如何更好地解释它,而不发布整个代码。实际上,如果你在google GreenhouseControls.java上搜索,你会在互联网上发现问题的一些变体。其中一个问题实际上与我之前的任务相同(基本上是相同的问题,但没有线程和反射)。