国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

怎樣用eclipse做網(wǎng)站品牌營銷推廣方案怎么做

怎樣用eclipse做網(wǎng)站,品牌營銷推廣方案怎么做,網(wǎng)站建設(shè)備案,北京做網(wǎng)站公司有哪些目錄 前言 一、確定需要多個(gè)鎖的場景 1.獨(dú)立資源保護(hù) 2.部分依賴資源 二、避免死鎖 三、鎖粒度與并發(fā)性能 1. 粗粒度鎖定 2.細(xì)粒度鎖定 四、設(shè)計(jì)策略:減少資源依賴 1.資源分離 2.無鎖設(shè)計(jì) 3.鎖合并 五、Demo講解 總結(jié): 前言 當(dāng)多個(gè)線程需要…

目錄

前言

一、確定需要多個(gè)鎖的場景

1.獨(dú)立資源保護(hù)

2.部分依賴資源

二、避免死鎖

三、鎖粒度與并發(fā)性能

1.?粗粒度鎖定

2.細(xì)粒度鎖定

四、設(shè)計(jì)策略:減少資源依賴

1.資源分離

2.無鎖設(shè)計(jì)

3.鎖合并

五、Demo講解

總結(jié):


前言

????????當(dāng)多個(gè)線程需要操作共享資源時(shí),為了確保數(shù)據(jù)的一致性和避免競爭條件,通常會使用多個(gè)鎖來進(jìn)行同步。這種情況下,如何正確使用多個(gè)鎖成為一個(gè)復(fù)雜而關(guān)鍵的問題。下面是一篇十分詳細(xì)的博客,介紹多線程多鎖場景下的最佳實(shí)踐和注意事項(xiàng)。

一、確定需要多個(gè)鎖的場景

1.獨(dú)立資源保護(hù)

  • 定義:當(dāng)不同的資源(例如文件、數(shù)據(jù)庫連接等)由不同的鎖保護(hù)時(shí)。
  • 示例:一個(gè)線程需要讀取文件A并寫入文件B,而另一個(gè)線程讀取文件B并寫入文件A,這兩個(gè)操作可以分別使用不同的鎖。

2.部分依賴資源

  • 定義:多個(gè)資源之間存在某種程度的依賴關(guān)系,但操作它們的線程可能不會同時(shí)訪問所有資源。
  • 示例:兩個(gè)線程分別操作兩個(gè)互相有數(shù)據(jù)交換的隊(duì)列,可分別對兩個(gè)隊(duì)列加鎖,但在交換數(shù)據(jù)時(shí)需要特別小心處理鎖的順序。

二、避免死鎖

死鎖是多線程編程中常見的問題,特別是在使用多個(gè)鎖的情況下更容易發(fā)生。要避免死鎖,可以采取以下策略:

  • 按順序獲取鎖:對多個(gè)資源使用相同的順序獲取鎖,以避免循環(huán)等待。
  • 設(shè)置超時(shí)時(shí)間:在獲取鎖的過程中設(shè)置超時(shí)時(shí)間,一段時(shí)間后未能獲取到鎖就放棄或重試。
  • 使用高級同步工具:比如信號量(Semaphores)或條件變量(Condition Variables),它們提供了更靈活的同步機(jī)制,有助于避免死鎖。

三、鎖粒度與并發(fā)性能

1.?粗粒度鎖定

  • 優(yōu)點(diǎn):實(shí)現(xiàn)簡單,易于理解和維護(hù)。
  • 缺點(diǎn):可能導(dǎo)致大量線程等待,從而降低并發(fā)性能。
  • 示例:一個(gè)單一的大鎖保護(hù)整個(gè)資源集合。

2.細(xì)粒度鎖定

  • 優(yōu)點(diǎn):提高并發(fā)性能,因?yàn)殒i的范圍縮小,減少了線程等待的概率。
  • 缺點(diǎn):實(shí)現(xiàn)復(fù)雜,需要更精細(xì)的設(shè)計(jì)和管理。
  • 示例:為每個(gè)獨(dú)立資源(或資源的部分)使用單獨(dú)的小鎖。

四、設(shè)計(jì)策略:減少資源依賴

1.資源分離

  • 定義:盡量將共享資源劃分為獨(dú)立的部分,使得每個(gè)部分只需一個(gè)鎖。
  • 示例:將一個(gè)大型數(shù)據(jù)庫拆分為多個(gè)獨(dú)立的部分,每個(gè)部分由不同的線程和鎖管理。

2.無鎖設(shè)計(jì)

  • 定義:通過無鎖編程(如使用原子操作)來完全避免鎖。
  • 示例:使用Java的AtomicInteger類進(jìn)行計(jì)數(shù)器操作。

3.鎖合并

  • 定義:在某些情況下,將多個(gè)鎖合并為一個(gè)鎖,以簡化鎖管理。
  • 示例:如果兩個(gè)資源總是一起被訪問,可以用一個(gè)鎖來保護(hù)它們。

五、Demo講解

package com.ctb.demo;/*** 關(guān)鍵字synchronized取得的鎖都是對象鎖,而不是把一段代碼(方法)當(dāng)做鎖* 所以代碼中哪個(gè)線程先執(zhí)行synchronized關(guān)鍵字的方法,哪個(gè)線程就持有該方法所屬對象的鎖(Lock),* * 在靜態(tài)方法上加synchronized關(guān)鍵字,表示鎖定.class類,類一級別的鎖(獨(dú)占.class類)* * @author biao** 2024年*/
public class MyThread2 {private int num =0;public synchronized void printNum(String tag) {try {if (tag.equals("a")) {num=100;System.out.println("tag a,set num over!");Thread.sleep(1000);}else {num = 200;System.out.println("tag b,set num over!");}System.out.println("tag" + tag + "," + "num" + num);} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {final MyThread2 m1 = new MyThread2();final MyThread2 m2 = new MyThread2();Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {m1.printNum("a");}});Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {m2.printNum("b");}});t1.start();t2.start();}}

結(jié)果:

package com.ctb.demo;/*** 關(guān)鍵字synchronized取得的鎖都是對象鎖,而不是把一段代碼(方法)當(dāng)做鎖* 所以代碼中哪個(gè)線程先執(zhí)行synchronized關(guān)鍵字的方法,哪個(gè)線程就持有該方法所屬對象的鎖(Lock),* * 在靜態(tài)方法上加synchronized關(guān)鍵字,表示鎖定.class類,類一級別的鎖(獨(dú)占.class類)* * @author biao** 2024年2月28日-上午12:07:26*/
public class MyThread2 {private static int num =0;//	staticpublic static synchronized void printNum(String tag) {try {if (tag.equals("a")) {num=100;System.out.println("tag a,set num over!");Thread.sleep(1000);}else {num = 200;System.out.println("tag b,set num over!");}System.out.println("tag" + tag + "," + "num" + num);} catch (Exception e) {e.printStackTrace();}}public static void main(String[] args) {final MyThread2 m1 = new MyThread2();final MyThread2 m2 = new MyThread2();Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {m1.printNum("a");}});Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {m2.printNum("b");}});t1.start();t2.start();}}

結(jié)果:

總結(jié):

關(guān)鍵字synchronized取得的鎖都是對象鎖,而不是把一段代碼(方法)當(dāng)做鎖

  • 所以代碼中哪個(gè)線程先執(zhí)行synchronized關(guān)鍵字的方法,哪個(gè)線程就持有該方法所屬對象的鎖(Lock),

  • 在靜態(tài)方法上加synchronized關(guān)鍵字,表示鎖定.class類,類一級別的鎖(獨(dú)占.class類)

http://m.aloenet.com.cn/news/45213.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)需要會西安seo外包行者seo
  • 溫州電子商務(wù)網(wǎng)站建設(shè)windows優(yōu)化大師有哪些功能
  • 做網(wǎng)站內(nèi)容來源百度收錄提交網(wǎng)站后多久收錄
  • 宜春網(wǎng)站建設(shè)公司聯(lián)系方式百度seo 站長工具
  • 沈陽百度首頁優(yōu)化安徽seo優(yōu)化規(guī)則
  • 哈爾濱cms網(wǎng)站建設(shè)廣州網(wǎng)站建設(shè)系統(tǒng)
  • 建設(shè)一個(gè)導(dǎo)航網(wǎng)站百度搜索怎么優(yōu)化
  • 添加網(wǎng)站到百度中國十大軟件外包公司
  • 網(wǎng)站logo怎么做透明網(wǎng)絡(luò)運(yùn)營課程培訓(xùn)班
  • 貴州有網(wǎng)站的企業(yè)杭州seo推廣服務(wù)
  • 做網(wǎng)站推廣前途百度問答入口
  • 網(wǎng)頁版企業(yè)郵箱網(wǎng)絡(luò)優(yōu)化的流程
  • 什么網(wǎng)站免費(fèi)建設(shè)全網(wǎng)網(wǎng)站快速排名推廣軟件
  • 做教育機(jī)構(gòu)網(wǎng)站百度收錄提交入口網(wǎng)址
  • 網(wǎng)站服務(wù)器維護(hù)今天nba新聞最新消息
  • 網(wǎng)站上線需要哪些步驟2345電腦版網(wǎng)址導(dǎo)航
  • 怎樣做自己的國外網(wǎng)站網(wǎng)站收錄免費(fèi)咨詢
  • 如何在word上做網(wǎng)站網(wǎng)址房地產(chǎn)最新消息
  • 網(wǎng)絡(luò)公司網(wǎng)站建設(shè)彩鈴樣本軟文推廣文案范文
  • 廣州網(wǎng)站建設(shè) 廣州亦客網(wǎng)絡(luò)網(wǎng)絡(luò)推廣員工作好做嗎
  • 模版網(wǎng)站做支付功能小程序開發(fā)公司哪里強(qiáng)
  • 導(dǎo)購網(wǎng)站如何做淘寶客站長平臺網(wǎng)站
  • 做網(wǎng)站的域名怎么申請seo關(guān)鍵詞優(yōu)化的技巧和方法
  • 網(wǎng)站怎么做移動圖片大全學(xué)生個(gè)人網(wǎng)頁優(yōu)秀模板
  • dreamweaver網(wǎng)站制作步驟360收錄
  • 廣州商城網(wǎng)站建設(shè)公司湖南靠譜seo優(yōu)化
  • 沈陽模板 網(wǎng)站建設(shè)淘寶網(wǎng)店代運(yùn)營正規(guī)公司
  • 軟文營銷的缺點(diǎn)沈陽關(guān)鍵詞快照優(yōu)化
  • 萬網(wǎng)個(gè)人網(wǎng)站備案查詢新聞投稿
  • wordpress 南非政府網(wǎng)絡(luò)seo招聘