2013-03-27 110 views
0

我正在使用java中的Thread来扩展Thread。此线程不断执行一些后台工作。但过了一段时间(约15分钟),线程自动关闭,程序崩溃。任何请帮助如何创建一个长期运行的线程在java中执行一些后台功能和线程必须保持活着,直到应用程序活着。但我的问题是,即使在我的应用程序关闭之前,我的线程也正在关闭。在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

你可以发布堆栈跟踪或其他显示线程关闭的原因吗? – mthmulders 2013-03-27 08:43:54

+1

除了@mthmulders之外,你还应该在你的线程中发布一些代码。 – guness 2013-03-27 08:45:33

+0

我正在使用jmyron来访问摄像头。它是一个在JVM之外运行的线程。随着我也使用一个正常的线程。这个正常的线程总是看照相机是否可用或相机从系统中删除,以便我可以打印一条消息,找不到相机或类似的东西。 – alenlee 2013-03-27 08:50:19

回答

0

线程不应该关闭,而有任何的工作要做。您可能会错过某些东西,并且由于未处理的异常,内存泄漏等原因您的线程会停止。

0

代码中必定存在一些问题。 你可以使用线程的isAlive()方法来查看线程是否仍然活着或死亡。

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

如果您需要更多关于该主题的说明,请发布异常跟踪。 你可以使用sleep(int)方法或带有标志的while循环来明确地保持线程活着,如果你想要,虽然不是一个好主意。

它可能是你的主要方法启动线程,然后完成其执行的情况。这会发生,因为两者都是独立的进程。

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

+0

异常来临: – alenlee 2013-03-27 09:22:39