总结一下,使用kill命令向JVM进程发送一个退出信号, 结果JVM多了1个线程,还多了1个sokcet文件描述符.
进程间通信的方式有很多,其中信号就是其中一种方式....关于进程间的通信可以阅读它[ https://www.yuque.com/infuq/language/rvdvcu ] ....比如上文中,我们使用kill向指定的进程6617发送的3号退出信号,就是由进程6617中的Signal Dispatcher线程来处理的....而通过Unix Domain Socket创建出来的6号文件描述符,它就是由Attach Listener这个线程来使用的. 这个Attach Listener线程作为服务端,监听客户端的请求....第三种方式,通过C语言的方式, 之所以通过C语言的方式,旨在说明一点,不管我们使用的是jstack命令,还是上面的Java程序,或者阿里开源的Arthas(阿尔萨斯)工具,在它们的底层,都是通过同一种方式与目标