當(dāng)我們在運行一個應(yīng)用程序的時候,程序進(jìn)入內(nèi)存后就成了一個進(jìn)程,因此程序至少有一個進(jìn)程。但是為了提高程序的運行速度,往往需要同時處理不同的任務(wù),這時候我們就需要多個線程來完成。本文將介紹Java線程的基本概念和使用方法,以及Java中線程和進(jìn)程的區(qū)別。
一、基本概念
1、什么是線程?
線程 thread
? 是操作系統(tǒng)能夠進(jìn)行運算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實際運作單位。一個進(jìn)程中可以并發(fā)不同的線程,每條線程可以并行執(zhí)行不同的任務(wù)。
2、并發(fā)與并行
并發(fā):指兩個或多個事件在同一時刻發(fā)生(同時發(fā)生)。
并行:指兩個或多個實踐在同一個時間段內(nèi)發(fā)生。
3、線程和進(jìn)程的區(qū)別。
進(jìn)程:是指一個內(nèi)存中運行的應(yīng)用程序,每個進(jìn)程都有一個獨立的內(nèi)存空間,一個應(yīng)用程序可以同時運行多個進(jìn)程;進(jìn)程也是程序的一次執(zhí)行過程,是系統(tǒng)運行程序的基本單位;系統(tǒng)運行一個程序即是一個進(jìn)程從創(chuàng)建、運行到消亡的過程。
線程:進(jìn)程內(nèi)部的一個獨立執(zhí)行單元;一個進(jìn)行可以同時并發(fā)的運行多個線程。簡單的理解,進(jìn)程相當(dāng)于一個單 CPU 操作系統(tǒng),而線程是這個系統(tǒng)中運行的多個任務(wù)。
二、線程的使用
(1)定義子類繼承 ?Thread
? 類
(2)子類中重寫 ?Thread
? 類中的 ?run
? 方法
(3)創(chuàng)建 ?Thread
? 子類對象,也就是創(chuàng)建了線程對象
(4)調(diào)用線程對象 ?start
?方法,啟動線程,調(diào)用 ?run
? 方法
class MyThread extends Thread{
public MyThread(){
super();
}
public void run(){
for(int i = o;i<100;i++){
System.out.print1n("子線程: "+i);
}
}
}
public class TestThread {
public static void main(String[] args) {
//1.創(chuàng)建線程
MyThread mt = new MyThread();
//2.啟動線程,并調(diào)用當(dāng)前線程的run()方法。
mt.start();
}
}
三、線程定義方法
四、線程的同步
Java對于多線程的安全問題提供了專業(yè)的解決方法:同步機(jī)制
五、總結(jié)
通過本文的學(xué)習(xí),關(guān)于 Java 線程的基本概念和使用方法,以及線程和進(jìn)程的有了一個大概的了解。如果想要對線程、進(jìn)程等進(jìn)一步了解,請關(guān)注 w3cschool 或 編程獅APP。