0

我通过扩展 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.
> #
4

2 回答 2

0

线程在有任何工作要做时不应关闭。您可能会错过一些东西,并且您的线程会因为未处理的异常、内存泄漏或其他原因而停止。

于 2013-03-27T08:47:56.463 回答
0

代码中一定有问题。你可以使用线程的 isAlive() 方法来查看线程是否还活着或死了。

线程只有在完成执行或抛出运行时异常时才能被杀死。

如果您寻求有关该主题的更多说明,请发布异常跟踪。如果你愿意,你可以使用 sleep(int) 方法或带有标志的 while 循环来显式地保持线程处于活动状态,但这不是一个好主意。

您的 main 方法可能会启动线程然后完成其执行。这会发生,因为两者都是独立的过程。

您可以在 main 中使用 myThreadReference.join() 方法,以便使 main 方法等到您的线程完成执行,然后可能会在您的 main 中使用线程填充的一些变量/数据!

于 2013-03-27T08:50:30.080 回答