App下載

怎么定義Java線程的概念? 線程和進(jìn)程的區(qū)別?

猿友 2021-07-14 09:51:16 瀏覽數(shù) (2380)
反饋

當(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();
    }
}

三、線程定義方法

微信截圖_20210714094936

四、線程的同步

Java對(duì)于多線程的安全問(wèn)題提供了專(zhuān)業(yè)的解決方法:同步機(jī)制

圖片4

五、總結(jié)

通過(guò)本文的學(xué)習(xí),關(guān)于 Java 線程的基本概念和使用方法,以及線程和進(jìn)程的有了一個(gè)大概的了解。如果想要對(duì)線程、進(jìn)程等進(jìn)一步了解,請(qǐng)關(guān)注 w3cschool編程獅APP。


0 人點(diǎn)贊