偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

Java線程同步鎖解決共享數(shù)據(jù)安全

開發(fā) 后端
Java線程同步鎖如何才能報(bào)自己數(shù)據(jù)的安全呢?這個(gè)問題是很多人都在關(guān)系的。下面我們就詳細(xì)的看看相關(guān)技術(shù)特點(diǎn)就會(huì)找到答案。

我們?cè)诠蚕砦覀兊臄?shù)據(jù)的時(shí)候必須要考慮到安全的問題。Java線程同步鎖就幫助我們解決了這個(gè)難纏的問題。下面我們就來學(xué)些有關(guān)著房門的問題,希望大家有所后收獲。

我們可以在計(jì)算機(jī)上運(yùn)行各種計(jì)算機(jī)軟件程序。每一個(gè)運(yùn)行的程序可能包括多個(gè)獨(dú)立運(yùn)行的線程(Thread)。線程(Thread)是一份獨(dú)立運(yùn)行的程序,有自己專用的運(yùn)行棧。線程有可能和其他線程共享一些資源,比如,內(nèi)存,文件,數(shù)據(jù)庫(kù)等。

 

當(dāng)多個(gè)Java線程同步鎖同時(shí)讀寫同一份共享資源的時(shí)候,可能會(huì)引起沖突。這時(shí)候,我們需要引入線程“同步”機(jī)制,即各位線程之間要有個(gè)先來后到,不能一窩蜂擠上去搶作一團(tuán)。

 

同步這個(gè)詞是從英文synchronize(使同時(shí)發(fā)生)翻譯過來的。我也不明白為什么要用這個(gè)很容易引起誤解的詞。既然大家都這么用,咱們也就只好這么將就。 Java線程同步鎖的真實(shí)意思和字面意思恰好相反。線程同步的真實(shí)意思,其實(shí)是“排隊(duì)”:幾個(gè)線程之間要排隊(duì),一個(gè)一個(gè)對(duì)共享資源進(jìn)行操作,而不是同時(shí)進(jìn)行操作。

 

因此,關(guān)于線程同步,需要牢牢記住的第一點(diǎn)是:線程同步就是線程排隊(duì)。同步就是排隊(duì)。線程同步的目的就是避免線程“同步”執(zhí)行。這可真是個(gè)無聊的繞口令。

關(guān)于線程同步,需要牢牢記住的第二點(diǎn)是 “共享”這兩個(gè)字。只有共享資源的讀寫訪問才需要同步。如果不是共享資源,那么就根本沒有同步的必要。#t#

 

關(guān)于線程同步,需要牢牢記住的第三點(diǎn)是,只有“變量”才需要同步訪問。如果共享的資源是固定不變的,那么就相當(dāng)于“常量”,線程同時(shí)讀取常量也不需要同步。至少一個(gè)Java線程同步鎖修改共享資源,這樣的情況下,線程之間就需要同步。

 

關(guān)于線程同步,需要牢牢記住的第四點(diǎn)是:多個(gè)線程訪問共享資源的代碼有可能是同一份代碼,也有可能是不同的代碼;無論是否執(zhí)行同一份代碼,只要這些線程的代碼訪問同一份可變的共享資源,這些線程之間就需要同步。

 

為了加深理解,下面舉幾個(gè)例子。

有兩個(gè)采購(gòu)員,他們的工作內(nèi)容是相同的,都是遵循如下的步驟:

 

(1)到市場(chǎng)上去,尋找并購(gòu)買有潛力的樣品。

 

(2)回到公司,寫報(bào)告。

 

這兩個(gè)人的工作內(nèi)容雖然一樣,他們都需要購(gòu)買樣品,他們可能買到同樣種類的樣品,但是他們絕對(duì)不會(huì)購(gòu)買到同一件樣品,他們之間沒有任何共享資源。所以,他們可以各自進(jìn)行自己的工作,互不干擾。

 

這兩個(gè)采購(gòu)員就相當(dāng)于兩個(gè)Java線程同步鎖;兩個(gè)采購(gòu)員遵循相同的工作步驟,相當(dāng)于這兩個(gè)線程執(zhí)行同一段代碼。

 

下面給這兩個(gè)采購(gòu)員增加一個(gè)工作步驟。采購(gòu)員需要根據(jù)公司的“布告欄”上面公布的信息,安排自己的工作計(jì)劃。

這兩個(gè)采購(gòu)員有可能同時(shí)走到布告欄的前面,同時(shí)觀看布告欄上的信息。這一點(diǎn)問題都沒有。因?yàn)椴几鏅谑侵蛔x的,這兩個(gè)采購(gòu)員誰都不會(huì)去修改布告欄上寫的信息。

 

下面增加一個(gè)角色。一個(gè)辦公室行政人員這個(gè)時(shí)候,也走到了布告欄前面,準(zhǔn)備修改布告欄上的信息。

如果行政人員先到達(dá)布告欄,并且正在修改布告欄的內(nèi)容。兩個(gè)采購(gòu)員這個(gè)時(shí)候,恰好也到了。這兩個(gè)采購(gòu)員就必須等待行政人員完成修改之后,才能觀看修改后的信息。

 

如果行政人員到達(dá)的時(shí)候,兩個(gè)采購(gòu)員已經(jīng)在觀看布告欄了。那么行政人員需要等待兩個(gè)采購(gòu)員把當(dāng)前信息記錄下來之后,才能夠?qū)懮闲碌男畔ⅰ?/p>

 

上述這兩種情況,行政人員和采購(gòu)員對(duì)布告欄的訪問就需要進(jìn)行同步。因?yàn)槠渲幸粋€(gè)線程(行政人員)修改了共享資源(布告欄)。而且我們可以看到,行政人員的工作流程和采購(gòu)員的工作流程(執(zhí)行代碼)完全不同,但是由于他們?cè)L問了同一份可變共享資源(布告欄),所以他們之間需要同步。

 

Java線程同步鎖

前面講了為什么要Java線程同步鎖同步,下面我們就來看如何才能線程同步。

線程同步的基本實(shí)現(xiàn)思路還是比較容易理解的。我們可以給共享資源加一把鎖,這把鎖只有一把鑰匙。哪個(gè)線程獲取了這把鑰匙,才有權(quán)利訪問該共享資源。

 

生活中,我們也可能會(huì)遇到這樣的例子。一些超市的外面提供了一些自動(dòng)儲(chǔ)物箱。每個(gè)儲(chǔ)物箱都有一把鎖,一把鑰匙。人們可以使用那些帶有鑰匙的儲(chǔ)物箱,把東西放到儲(chǔ)物箱里面,把儲(chǔ)物箱鎖上,然后把鑰匙拿走。這樣,該儲(chǔ)物箱就被鎖住了,其他人不能再訪問這個(gè)儲(chǔ)物箱。(當(dāng)然,真實(shí)的儲(chǔ)物箱鑰匙是可以被人拿走復(fù)制的,所以不要把貴重物品放在超市的儲(chǔ)物箱里面。于是很多超市都采用了電子密碼鎖。)

 

Java線程同步鎖這個(gè)模型看起來很直觀。但是,還有一個(gè)嚴(yán)峻的問題沒有解決,這個(gè)同步鎖應(yīng)該加在哪里?

 

當(dāng)然是加在共享資源上了。反應(yīng)快的讀者一定會(huì)搶先回答。

 

責(zé)任編輯:張浩 來源: CSDN
相關(guān)推薦

2010-03-16 17:39:36

Java多線程鎖

2023-09-28 08:51:58

Java數(shù)據(jù)

2024-05-13 17:40:09

JavaLocking

2022-03-24 13:36:18

Java悲觀鎖樂觀鎖

2021-03-10 15:59:39

JavaSynchronize并發(fā)編程

2025-02-17 02:00:00

Monitor機(jī)制代碼

2024-04-11 08:16:36

C++線程共享數(shù)據(jù)

2009-09-14 19:39:14

批量線程同步

2010-03-16 16:34:06

Java編程語言

2021-03-15 07:02:02

java線程安全

2024-06-28 08:45:58

2022-08-17 06:25:19

偽共享多線程

2019-01-04 11:18:35

獨(dú)享鎖共享鎖非公平鎖

2024-10-29 15:23:45

Python線程安全

2011-06-30 17:21:56

Qt 線程 共享

2009-03-24 08:56:23

數(shù)據(jù)同步多線程Java

2012-04-16 10:12:54

Java線程

2010-03-17 18:21:54

Java多線程靜態(tài)數(shù)據(jù)

2025-08-06 01:22:00

并發(fā)編程數(shù)據(jù)

2024-10-31 11:32:28

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)