多執行緒技術基礎

2021-10-21 05:51:27 字數 3793 閱讀 4635

程序與執行緒:舉個例子,電腦上執行的各個應用程式為程序,那麼在乙個應用程式中的執行的為執行緒。執行的程式為程序,乙個進可以產生多個執行緒。

多執行緒:同時多條執行緒同時執行,就好像你個人可以邊吃飯邊聽歌一樣。

兩種方法

用extends繼承thread類

用implements實現runnable介面

方法一`

public

class

testthread

extends

thread

}public

static

void

main

(string[

] args)

}

方法二

public

class

testthread2

implements

runnable

}public

static

void

main

(string[

] args)

}

畫重點:實現runnable時將這個實現類的物件作為引數傳入到新建的執行緒物件在,從而可以呼叫實現類中的方法。

執行緒的命名,setname()

得到執行緒的名字,getname()

判斷執行緒是否「活著」,isalive()

取得執行緒本身的方法,currentthread()

設定執行緒優先順序,setpriority(),1-10級,級數越高,執行可能高,並不是一定先執行

public

class

testthread3

extends

thread

}public

static

void

main

(string[

] args)

}

思路:設定乙個條件,while判斷,條件滿足時,可以執行run方法裡的方法體,條件不滿足時,則不執行

public

class

testthread4

implements

runnable

system.out.

println

("執行緒結束");

}public

void

cease()

public

static

void

main

(string[

] args)

ttt.

cease()

; system.out.

println

("執行緒該停了");

}}

兩個執行緒同時執行,相互嵌合,當其中乙個執行完成之後另外乙個才能繼續執行。

方法:執行緒.join()

public

class

testthread5

catch

(interruptedexception e)

system.out.

println

("a接過了b買的東西");

//-------------------②}}

class

aextends

thread

catch

(interruptedexception e)

system.out.

println

("b買好了");

//----------①}}

class

bextends

thread

catch

(interruptedexception e)}}

}

執行後會發現,輸出語句①定要thread2執行完後才會執行,輸出語句②要thread1執行完後才會執行

同步方法:synchronized()

public

class

testsync

}class

account

}class

drawing

extends

thread

public

void

run(

)try

catch

(interruptedexception e)

account.money-=drawingnum;

total+=drawingnum;

system.out.

println

(this

.getname()

+"賬戶餘額"

+account.money)

; system.out.

println

(this

.getname()

+"共取了"

+"賬戶餘額"

+account.money)

; system.out.

println

(this

.getname()

+"共取了"

+total);}

}

生產者——消費者模型,設計三個類:

生產者類:生產資料;

消費者類:取出資料;

儲存類:儲存資料;

給乙個最大的儲存量和初始資料量,通過生產者、消費者的生產、取出變換儲存資料量,資料達到最大值時,生產者wait,知道得到消費者通知notify()已經消費時,繼續生產,反之亦然。

public

class

wait_notify

}class

bank

else

catch

(interruptedexception e)}}

public

synchronized

void

add(

)else

catch

(interruptedexception e)}}

}class

produce

extends

thread

public

void

run(

)catch

(interruptedexception e)

bank.

add();

}}}class

consumer

extends

thread

public

void

run(

)catch

(interruptedexception e)

bank.

remove()

;}}}

多執行緒技術

1,程序 執行緒 程序 系統中同時執行的不同程式 執行緒 程式中同時執行不同的操作 單個cpu只能按順序執行指令,cpu可以隨機在不同的程序和執行緒進行切換,保證程序和執行緒都執行一遍後再重複這個過程。因為cpu執行速度足夠快,讓人感覺程式是同時執行的。2,執行緒 thread thread sle...

多執行緒基礎

對於多執行緒程式設計,很多人概念不清,寫 的時候要麼是處處加鎖,影響效能不說,還容易莫名其妙的死鎖,還有人對多執行緒敬而遠之。所以學習多執行緒程式設計最重要的不是學習 api,而是理解什麼才是多執行緒安全的 從例子說起 include include long global1 0 volatile ...

多執行緒基礎

什麼是併發 同時執行多個程式,或者乙個程式的多段 在巨集觀上,存在併發的,但是在微觀上,其實不存在併發 時間片 在計算機中,使用時間片來實現併發的運算 在計算甲中,在最小的單位時間上 只能執行乙個運算 用來控制多個程式之間的輪轉,使得程式交替的執行 達到併發的目的 多個cpu 多個核心 才能實現真正...