在Java中,如果一个线程被杀死,另一个线程会发生什么?

nan*_*itv 5 java multithreading

我想用Java知道:

  1. 如果主线程被杀死了其他子线程会发生什么?
  2. 如果子线程被杀死了兄弟姐妹和父线程会发生什么?

我在下面的链接中读到,由于线程共享地址空间,杀死一个线程也会影响其他线程.

以下是这里的引用.

线程是轻量级进程,将主要控制流分为多个流,每个控制/线程流将独立执行.系统中进程的活动由线程表示.具有多个线程的进程称为多线程.每个线程都有自己的线程ID(数据类型整数),寄存器,程序计数器,堆栈,错误号.线程可以在同一进程中使用共享内存进行通信.使用线程来管理和维护应用程序的子任务有不同的优点.当我们使用线程时,使用较少的系统资源进行上下文切换并增加应用程序的吞吐量.线程还简化了程序的结构.任务之间没有特殊的通信机制.线程也有一些缺点,例如线程不可重用,因为它们依赖于进程并且不能与进程分离.线程不是孤立的,因为它们没有自己的地址空间.线程导致的错误可能会终止整个进程或程序,因为该错误会影响该进程或程序中使用的所有线程的整个内存空间.由于线程共享资源在进程中也可能影响整个进程或程序在线程资源损坏时.对于内存线程的并发读写访问将需要同步.线程通过数据竞争很容易损坏进程的数据,因为进程中的所有线程都具有对同一条数据的写访问权.

您可以告诉我们上述链接中的内容是否适用于java

aio*_*obe 10

1)"子线程"什么都不会发生......

2)"兄弟之间的线索"什么都不会发生......

...具有以下异常:如果所有剩余的线程都是守护程序线程,则应用程序将终止(即,当只剩下守护程序线程时,这些线程也将被终止).

来自以下文件Thread:

[...] Java虚拟机继续执行线程,直到发生以下任一情况:

  • 类Runtime的退出方法已被调用[...]
  • 所有非守护程序线程的线程都已死亡,无论是通过从run方法调用返回还是抛出传播超出run方法的异常.