【发布时间】:2011-11-18 09:38:37
【问题描述】:
我想知道Java:
- 如果主线程被杀死,其他子线程会怎样?
- 如果子线程被杀死,兄弟线程和父线程会怎样?
我在下面的链接中读到,由于线程共享地址空间,杀死一个线程也会影响另一个线程。
以下是here的引述。
线程是轻量级的进程,它将主控制流分成多个流,每个控制流/线程将独立执行。系统中进程的活动由线程表示。具有多个线程的进程称为多线程。每个线程都有自己的线程 ID(数据类型整数)、寄存器、程序计数器、堆栈、错误号。线程可以在同一进程中使用共享内存进行通信。 使用线程来管理和维护应用程序的子任务有不同的优点。当我们使用线程时,用于上下文切换的系统资源更少,并增加了应用程序的吞吐量。线程还简化了程序的结构。任务之间没有特殊的通信机制。 线程也有一些缺点,例如线程不可重用,因为它们依赖于进程并且不能与进程分离。线程不是孤立的,因为它们没有自己的地址空间。线程导致的错误可能会杀死整个进程或程序,因为该错误会影响该进程或程序中使用的所有线程的整个内存空间。由于在进程中由线程共享资源,当一个资源被线程损坏时,也会影响整个进程或程序。对于内存线程的并发读写访问将需要同步。进程的数据很容易通过数据竞争被线程损坏,因为进程中的所有线程都对同一条数据具有写访问权限。
你能告诉我上面链接中所说的是否适用于java
【问题讨论】:
标签: java multithreading