后台线程死亡时其创建的子线程是怎么处理的?

java一个后台线程启动的线程默认也是后台线程,那么当这个后台线程死亡的时候但这个时候用户线程还未死亡,它创建的子线程是怎样处理的?是随着父线程一同死亡还是继续运行,直至run方法结束或者用户线程死亡

private class StopServer extends Thread
{ public void start { this.setDaemontrue; super.start ; } @Override public void run { ServerSocket serverSocket = null ; Socket socket = null ; try { serverSocket = new ServerSocket8001 ; while true { socket = serverSocket.accept; String line = new BufferedReadernew InputStreamReadersocket.getInputStream.readLine; if line.equals"shutdown" { socket.getOutputStream.write"ok, start stop the server.... ".getBytes; socket.getOutputStream.flush ; System.out.println"start a new thread to stop the server...." ; //新创建的子线程 new Thread { public void start { setDaemontrue; super.run; } public void run { System.out.println"start stopServer Thread..."; EchoServer2.this.stop; } }.start; break ; } else { if !socket.isClosed socket.close; } } } catch IOException e { System.err.println"daemon thread exception: " + e; e.printStackTrace; } finally { System.out.println"stop stopServer..."; ifserverSocket != null && !serverSocket.isClosed try { serverSocket.close; } catch IOException e { e.printStackTrace; } ifsocket != null && !socket.isClosed try { socket.close; }catch IOException e { e.printStackTrace ; } } }
}

这是我昨天自己写的一个服务器的一个后台线程, 这个线程主要用来监听8001端口, 如果收到shutdown的命令, 就关闭服务器, 关闭服务器我启动了一个新的线程, 也就是这个后台线程的子线程, 实际运行时,服务器并没有被关闭, 所以我判断子线程会随着整个后台线程一起死亡, 看来操作系统得重新念一遍书了. 烦扰大家了

this.setDaemontrue;

因为是Daemon

发表评论

电子邮件地址不会被公开。 必填项已用*标注