我想在Java中知道:在Java中,如果一個線程死亡,另一個線程會發生什麼?
- 如果主線程被殺了會發生什麼其他的孩子線程?
- 如果子線程被殺死了兄弟和父線程會發生什麼?
我看了下面的鏈接,因爲線程共享地址空間,殺死一個線程也會影響其他線程。
以下是here的報價。
線程是輕量級進程,它將主要控制流分成多個流,並且每個控制/線程流將獨立執行。系統中進程的活動由線程表示。具有多個線程的進程稱爲多線程。每個線程都有自己的線程ID(數據類型整數),寄存器,程序計數器,堆棧,錯誤號。線程可以在同一進程中使用共享內存進行通信。 使用線程來管理和維護應用程序的子任務有不同的優勢。當我們使用線程時,系統資源被用於上下文切換,並增加了應用程序的吞吐量。線程也簡化了程序的結構。任務之間沒有專門的通信機制。 線程也有一些缺點,例如線程不可重用,因爲它們依賴進程並且不能與進程分離。線程不是孤立的,因爲它們沒有自己的地址空間。線程的錯誤原因可能會終止整個進程或程序,因爲該錯誤會影響該進程或程序中使用的所有線程的整個內存空間。由於線程在共享資源的過程中也可能影響整個進程或程序受到線程資源損害的時間。對於併發讀寫訪問內存線程將需要同步。進程的數據很容易被線程通過數據競爭破壞,因爲進程中的所有線程都有對同一段數據的寫訪問權限。
u能吉歐斯請告訴無論是否在上面的鏈接告訴適用於Java的
感謝您的快速回復。我對第二點有一個疑問。我在以下鏈接中看到,由於共享地址空間的線程,殺死一個線程也會影響其他線程。等待您的回覆 http://www.blurtit.com/q236205.html – nantitv
A)當說「線程也簡化了程序的結構*」時,這種咆哮是完全錯誤的,並且之後它沒有聲明可以修復那些可憐的東西句子。 B)我不認爲它適用於Java。 C)不要明確殺死線程(通過使用Thread.stop)。 Thread.stop方法由於很好的原因而被棄用。 – aioobe
線程可幫助程序在同一時間管理不同的任務。 Thread.stop()方法已被棄用,因爲它是不安全的(想想如果線程正在管理一些重要的數據)。最好在run()方法中用布爾條件將其停止在while循環中。 –