轉自:
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("執行緒已經退出!");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/499980.html
標籤:其他
上一篇:第 3 章 處理資料
下一篇:Java 如何終止執行緒呢?
