前言-薇:itstudy01
在我們工作和學習的過程中,Java線程我們或多或少的都會用到,但是在使用的過程上并不是很順利,會遇到各種各樣的坑,這里我通過講解Thread類中的核心方法,以求重點掌握以下關鍵技術點:
線程的啟動
如何使線程暫停
如何使線程停止
線程的優先級
線程安全相關的問題
什么是進程和線程?
進程 - 進程是具有一定獨立功能的程序(例如QQ.exe),關于某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。
線程 - 線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位;線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。
一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以并發執行。
相對進程而言,線程是一個更加接近于執行體的概念,它可以與同進程中的其他線程共享數據,但擁有自己的棧空間,擁有獨立的執行序列。
在串行程序基礎上引入線程和進程是為了提高程序的并發度,從而提高程序運行效率和響應時間。
多線程的優點
其實多線程從某方面可以等價于多任務,當你有多個任務要處理時,多個任務一起做所消耗的時間肯定比任務串行起來做,所消耗的時間短;下圖可以很好的說明:
單任務運行環境與多任務運行環境比較
在我們現在的系統中,CPU的運行速度是很快的,其中很大的時間消耗是在等硬盤、IO輸入、網絡等資源;當多任務時,CPU完全可以在多個任務之間來回切換。使用的花費的時間遠遠少于所有任務需要消耗的少。
使用多線程
在Java的JDK包中,已經自帶了對多線程技術的支持,可以非常方便地進行多線程的編程。實現多線程編程的方式主要有兩種:
繼承Thread類
實現Runnable接口