我通过扩展Thread在java中使用Thread。这个线程不断执行一些后台工作。但经过一段时间(大约15分钟)线程自动关闭,程序崩溃。请帮助如何在java中创建一个执行一些后台函数的长期运行线程,并且线程必须保持活动直到应用程序处于活动状态。但我的问题是,即使在我的应用程序关闭之前,我的线程也在关闭。
最诚挚的问候, AlenLee MJ
> Exception Coming:Execution protection violation
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x1000cb77, pid=1028, tid=11996
> #
> # JRE version: 7.0_10-b18
> # Java VM: Java HotSpot(TM) Client VM (23.6-b04 mixed mode, sharing windows-x86 )
> # Problematic frame:
> # C 0x1000cb77
> #
> # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
> #
> # An error report file with more information is saved as:
> # E:\alen_project\QrCodeScanningAppForCCD\hs_err_pid1028.log
> #
> # If you would like to submit a bug report, please visit:
> # http://bugreport.sun.com/bugreport/crash.jsp
> # The crash happened outside the Java Virtual Machine in native code.
> # See problematic frame for where to report the bug.
> #
答案 0 :(得分:0)
线程不应该在有任何工作要做时关闭。您可能会错过某些内容,并且由于未处理的异常,内存泄漏等原因导致您的线程停止。
答案 1 :(得分:0)
代码中必定存在一些问题。 你可以使用线程的isAlive()方法来查看线程是否仍然存活或死亡。
线程只有在完成执行或抛出运行时异常时才能被终止。
如果您要求对该主题进行更多说明,请发布例外跟踪。 你可以使用sleep(int)方法或带有标志的while循环来保持线程显式活着,如果你想要的话虽然不是一个好主意。
可能是您的main方法启动线程然后完成其执行的情况。这将发生,因为两者都是独立的过程。
你可以在main中使用myThreadReference.join()方法,以便让main方法等到你的线程完成执行,然后可能会更新主要线程中填充的一些变量/数据!