併發程式設計之多執行緒基礎知識

2021-10-08 18:40:57 字數 2253 閱讀 8804

在學習多執行緒之前,我們需要知道什麼是執行緒,當然也少不了需要知道什麼是程序。這裡僅僅是放兩句比較簡單的話,有個印象就行,畢竟執行緒和程序的概念網上一大堆,記大多其實也沒啥用。

但是呢,面試的時候又喜歡問一些概念性的東西,所以這裡還是需要把比較重要的概念記錄一下。

知道了程序和執行緒的概念之後,我們在看一下什麼是併發,什麼是並行。

至於我們說多執行緒就是併發,那我們來看一下併發中的三個問題:

用來表示一種公共資源或是共享資料,可以被多個執行緒使用。同一時間只能有乙個執行緒訪問臨界區(阻塞狀態),其他資源必須等待。

首先,在解釋這個問題之前,我們需要知道wait方法和notify方法的用法。

我們都知道,wait和notify方法都需要在synchronized關鍵字包裹的**中執行才可以。那在此之前我們看一下synchronized關鍵字的用法:

// 第一種

public

class

}// 第二種

public

class

}// 第三種

public

class}}

// 第四種

public

class

}}

我們需要明確,synchronized關鍵字鎖的是什麼?鎖的是物件,不管是以上哪種方式出現,鎖的都是物件。

當然,除了上述四種使用,我們可以使用任何物件當鎖。比如object o = new object()是用o當鎖物件。即(monitor).

如下:

public

class

}}

到這裡,synchronized 內建鎖的用法就差不多了,我們看一下wait方法和notify方法。為什麼在說wait方法和notify方法之前需要介紹synchronized關鍵字的用法呢,是因為wait方法和notify方法是需要在synchronized關鍵字作用的**中使用的。如下:

public

synchronized

void

method()

catch

(interruptedexception e)

}public

static

void

main

(string[

] args)

throws interruptedexception }.

start()

;/** 等待 new thread 執行*/

thread.

sleep

(1000);

synchronized

system.out.

println

("running here.");

}

通過上面**可以看到,wait方法和notify方法都是作用在synchronized關鍵字的**中。我們使用哪個物件去做鎖物件(monitor), 就需要使用哪個物件去呼叫wait方法,否則會丟擲illegalmonitorstateexception非法monitor狀態異常,其實就是monitor和呼叫的方法不一致。

同樣,如果是static方法,則需要使用類物件來wait和notify:

public

static

synchronized

void

method()

catch

(interruptedexception e)

}public

static

void

main

(string[

] args)

throws interruptedexception }.

start()

;/** 等待 new thread 執行*/

thread.

sleep

(1000);

synchronized

class

) system.out.

println

("running here.");

}

總結:

到這裡我們就可以回答這個問題了:

q: 為什麼wait方法和notify方法會設計到object類中。

a: 因為鎖物件monitor可以是任何物件,而wait方法和notify方法 又只能被monitor物件呼叫。所以wait方法和notify方法一定要設計到object類中。

python併發程式設計之多執行緒

程序包含了執行該程式所需要所有資源 程序是乙個資源單位 執行緒是cpu的最小執行單位 每乙個程序一旦被建立 就預設開啟了一條執行緒 稱之為主線程 使用執行緒可以提高程式效率 為何不用多程序提高效率 是因為程序對作業系統的資源耗費非常高 執行緒共享建立它的程序的位址空間 程序有自己的位址空間。執行緒可...

1 3併發程式設計之多執行緒通訊

多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。1.因為涉及到物件鎖,他們必須都放在synchronized中來使用.wait notify一定要在synchronized裡面進行使用。2.wait必須暫定當前正在執行的執行緒,並釋放資源鎖,讓其他執行緒可以有機會執行 3....

python併發程式設計之多執行緒一

一,什麼是執行緒 執行緒也被稱為輕量程序電腦科學術語,指執行中的程式的排程單位。執行緒是程序中的實體,乙個程序可以擁有多個執行緒,乙個執行緒必須有乙個父程序。執行緒不擁有系統資源,只有執行必須的一些資料結構 它與父程序的其它執行緒共享該程序所擁有的全部資源。執行緒可以建立和撤消執行緒,從而實現程式的...