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