看《C++ Primer Plus》時整理的學習筆記,部分內容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,張海龍 袁國忠譯,人民郵電出版社。只做學習記錄用途。 ...
轉自:
http://www.java265.com/JavaCourse/202204/3186.html
線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程並行執行不同的任務。在Unix System V及SunOS中也被稱為輕量進程(lightweight processes),但輕量進程更多指內核線程(kernel thread),而把用戶線程(user thread)稱為線程。
線程是獨立調度和分派的基本單位。線程可以為操作系統內核調度的內核線程,如Win32線程;由用戶進程自行調度的用戶線程,如Linux平臺的POSIX Thread;或者由內核與用戶進程,如Windows 7的線程,進行混合調度。
同一進程中的多條線程將共用該進程中的全部系統資源,如虛擬地址空間,文件描述符和信號處理等等。但同一進程中的多個線程有各自的調用棧(call stack),自己的寄存器環境(register context),自己的線程本地存儲(thread-local storage)。
一個進程可以有很多線程,每條線程並行執行不同的任務。
在多核或多CPU,或支持Hyper-threading的CPU上使用多線程程式設計的好處是顯而易見,即提高了程式的執行吞吐率。在單CPU單核的電腦上,使用多線程技術,也可以把進程中負責I/O處理、人機交互而常被阻塞的部分與密集計算的部分分開來執行,編寫專門的workhorse線程執行密集計算,從而提高了程式的執行效率。
下文筆者講述java中終止線程的方法分享,如下所示:
實現思路: 1.可使用Thread中stop()方法即可終止線程 2.使用interrupt方法中斷線程 註意事項: Thread中stop()方法不安全,筆者不建議使用此種方法 interrupt方法中斷線程註意事項: 使用interrupt方法後,sleep方法將拋出一個InterruptedException 或線程直接退出
例:
public class ThreadInterrupt extends Thread { public void run() { try { sleep(30000); // 延遲30秒 } catch (InterruptedException e) { System.out.println(e.getMessage()); } } public static void main(String[] args) throws Exception { Thread thread = new ThreadInterrupt(); thread.start(); System.out.println("在30秒之內按任意鍵中斷線程!"); System.in.read(); thread.interrupt(); thread.join(); System.out.println("線程已經退出!"); } }