多執行緒概述 2

2021-10-09 01:45:05 字數 1512 閱讀 1875

在售票案例中,極有可能碰到的「意外」情況,比如一張同樣的票被列印多次,或者列印的票號為0甚至是負數,這些情況都是由多執行緒操作共享資源所導致的執行緒安全問題。

例如

class

ticket

implements

runnable

catch

(interruptedexception e)

system.out.

println

(thread.

currentthread()

.getname()

+"正在發售第"

+tickets--

+"張票");

問題產生的原因:執行緒任務中在操作共享的資料。

執行緒任務操作共享資料的**有多條(運算有多個)。

好處:可以解決多執行緒安全問題

缺點:降低了程式的效能。每個執行緒都要去判斷鎖機制,那麼會增加程式執行的負擔,同時只要做判斷,cpu都要處理,那麼也會消耗cpu的資源。即就是加同步會降低程式的效能。

舉例

class

ticket

implements

runnable

catch

(interruptedexception e)

system.out.

println

(thread.

currentthread()

.getname()

+"正在發售第"

+tickets--

+"張票");

}}}}

}

多個執行緒操作了共享資料,並且操作共享資料的**有多句,必須使用同步**塊來解決,當執行緒任務**只會有乙個執行緒執行時,加不加同步都可以。當執行緒任務**會有被多個執行緒執行時,這時需要加同步,但是加同步時一定要保證多個執行緒使用的是同一把鎖。上述**發生的安全問題就是因為每個執行緒都有自己的object物件作為自己的鎖。

同步的前提:必須保證多個執行緒在同步中使用的是同乙個鎖。

class

demo

}class

bank}}

//描述儲戶,每個使用者都會給銀行中存放錢,存錢這個行為應該是要被多個執行緒操作

class

consumer

implements

runnable

//多執行緒要操作的儲存錢的過程

public

void

run()}

}

多執行緒整理01 多執行緒概述

什麼是程式?程式是一段由作業系統執行的 什麼是程序?程序是程式執行的過程,或者說正在被執行的一道程式,乙個程序由乙個或者多個執行緒組成 什麼是執行緒?執行緒是程序的執行部分,每個執行緒都有各自的堆疊空間,堆疊是私有的,而執行緒共享程序內的其他資源 什麼是併發和並行 併發 如果只有單個cpu的話,程式...

android 多執行緒概述

android多執行緒,一直是乙個麻煩的事情,要掌握它的本質,我們需要搞清楚乙個問題,linux多執行緒的本質。了解linux的歷程,了解android的非同步任務機制,了解android的多步任務。說到linux的多執行緒,我們要比較windows與linux的多執行緒的模型。windows執行緒...

android 多執行緒概述

android多執行緒,一直是乙個麻煩的事情,要掌握它的本質,我們需要搞清楚乙個問題,linux多執行緒的本質。了解linux的歷程,了解android的非同步任務機制,了解android的多步任務。說到linux的多執行緒,我們要比較windows與linux的多執行緒的模型。windows執行緒...