Java应用程序在调用System.exit(0)时不退出

时间:2012-07-31 07:14:34

标签: java exit

我在Mac和Windows上都运行了Java应用程序。我在用户按“退出”按钮时调用System.exit(0)。该应用程序在Win7上运行良好。但在Mac上,按“退出”按钮后,程序无法退出。该申请没有回复。

根据活动监视器,所有用户线程都被终止。我不知道该节目在等什么。

我无法粘贴Activity Monitor的整个输出,但这是一个例子:

851 Thread_435381: Java: Exception Handler Thread  
851 Thread_435386: Java: Gang worker#0 (Parallel GC Threads)
851 Thread_435493
851 thread_start  (in libsystem_c.dylib) + 34  [0x92abd6de]  
851 _pthread_start  (in libsystem_c.dylib) + 335  [0x92ab9ed9]  
851 CAPThread::Entry(CAPThread*)  (in CoreMediaIO) + 123  [0x9a5e3a3d]  
851 CMIO::DAL::RunLoop::OwnThread(void*)  (in CoreMediaIO) + 160  [0x9a5eded2]  
851 CFRunLoopRunInMode  (in CoreFoundation) + 120  [0x9329c328]  
851 CFRunLoopRunSpecific  (in CoreFoundation) + 332  [0x9329c47c]  
851 __CFRunLoopRun  (in CoreFoundation) + 1428  [0x9329cda4]  
851 __CFRunLoopServiceMachPort  (in CoreFoundation) + 170  [0x93293c7a]  
851 mach_msg  (in libsystem_kernel.dylib) + 70  [0x942601f6]  
851 mach_msg_trap  (in libsystem_kernel.dylib) + 10  [0x94260c22]'  

3 个答案:

答案 0 :(得分:1)

1。我认为你将你的非Gui作品与Gui混合。

2。我希望您保留Event Dispatcher Thread 仅用于GUI目的,而不是其他任何内容,如果你还没试过......然后尝试做它...

public static void main(String[] args){

        EventQueue.invokeLater(new Runnable(){

               public void run(){


                      myframe.setVisible();

                   }


          });


   }

答案 1 :(得分:0)

我认为你使用swing JFrame,除了Kumar Vivek Mitra的回答,要退出,你也可以这样做:

jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

答案 2 :(得分:0)

进行线程转储以查看哪些线程阻止退出。 为此,请打开命令提示符,然后执行ps -eaf | grep java。 找到你的pid并做,杀死-3次。

您应该获得一个Thread转储并查看阻塞的线程。 问候 菲利普