中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

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

一學(xué)一做看視頻網(wǎng)站有哪些網(wǎng)絡(luò)營銷產(chǎn)品策略分析

一學(xué)一做看視頻網(wǎng)站有哪些,網(wǎng)絡(luò)營銷產(chǎn)品策略分析,500強(qiáng)企業(yè)排名一覽表,昆明網(wǎng)站代理線程安全 線程安全:線程安全:synchronized同步代碼塊:同步方法:成員同步方法:靜態(tài)同步方法: Lock:應(yīng)用: 單例模式:懶漢式:餓漢式:枚舉餓漢式:雙重檢驗(yàn)鎖: 線程…

線程安全

  • 線程安全:
    • 線程安全:
      • synchronized
        • 同步代碼塊:
        • 同步方法:
          • 成員同步方法:
          • 靜態(tài)同步方法:
      • Lock:
        • 應(yīng)用:
    • 單例模式:
      • 懶漢式:
      • 餓漢式:
      • 枚舉餓漢式:
      • 雙重檢驗(yàn)鎖:

線程安全:

線程安全:

線程安全 – 加鎖
注意:要想多個(gè)線程互斥住,就必須使用同一把鎖(對象)!!!

加鎖方式:

  1. synchronized
  2. Lock

?

synchronized

  1. 同步代碼塊
  2. 同步方法

?

同步代碼塊:

數(shù)據(jù)結(jié)構(gòu):

synchronized(鎖對象){//自動上鎖...想要互斥的代碼...}//自動解鎖

?

同步方法:
  1. 成員同步方法
  2. 靜態(tài)同步方法

?

成員同步方法:

注意:鎖對象 -> this

多個(gè)子線程時(shí),調(diào)用的對象(this)不一樣,則鎖不住。

數(shù)據(jù)結(jié)構(gòu):

public synchronized void method(){//自動上鎖...想要互斥的代碼...}//自動解鎖

?

靜態(tài)同步方法:

注意:鎖對象 -> 類.class

public static synchronized void method(){//自動上鎖...想要互斥的代碼...}//自動解鎖

?
?

Lock:

			//鎖對象Lock lock = new ReentrantLock();lock.lock();//手動上鎖...想要互斥的代碼...lock.unlock();//手動解鎖

?

應(yīng)用:
public class MyThread extends Thread{private static int allTicket = 1000;private static int curTicket = 0;private static Lock lock = new ReentrantLock();public MyThread(String name) {super(name);}@Overridepublic void run() {while(curTicket < allTicket){lock.lock();//手動上鎖try {if(curTicket < allTicket){curTicket++;System.out.println("窗口" + Thread.currentThread().getName() + "正在銷售第" + curTicket + "張票");}if(curTicket >= allTicket){System.out.println("窗口" +  Thread.currentThread().getName() + "票已經(jīng)售完");}} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();//手動解鎖}}}}
public static void main(String[] args) {MyThread t1 = new MyThread("001");MyThread t2 = new MyThread("002");MyThread t3 = new MyThread("003");t1.start();t2.start();t3.start();}

?

?

單例模式:

該類的對象在整個(gè)項(xiàng)目中只創(chuàng)建一次(只實(shí)例化一次)。

?

懶漢式:

單例模式(懶漢式)不是線程安全的。

public class A {//聲明對象名private static A a;private A(){}public static A getIntance(){//判斷對象為空,再創(chuàng)建對象if(a == null){a = new A();}return a;}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();//地址都是一樣的,則是一個(gè)對象System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}

?
?

餓漢式:

單例模式(餓漢式)是線程安全的。

public class A {//先創(chuàng)建對象private static A a = new A();private A(){}public static A getIntance(){return a;}public static void method(){System.out.println("用良心做教育");}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}

?
?

缺點(diǎn):如果只調(diào)用了類里的靜態(tài)方法,沒用到單例對象,就是浪費(fèi)空間。

public static void main(String[] args) {A.method();}

?

?

枚舉餓漢式:

枚舉單例模式(餓漢式)是線程安全的。

public enum A {//public static final A a = new A();a;private A(){}public static A getIntance(){return a;}public static void method(){System.out.println("用良心做教育");}@Overridepublic String toString() {return String.valueOf(a.hashCode());}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}

?
?

缺點(diǎn):如果只調(diào)用了枚舉里的靜態(tài)方法,沒用到單例對象,就是浪費(fèi)空間。

public static void main(String[] args) {A.method();}

?
?

雙重檢驗(yàn)鎖:

項(xiàng)目中使用的單例模式------->雙重檢驗(yàn)鎖。

雙重檢驗(yàn)鎖的單例模式是線程安全的。

volatile – 防止指令重排

?
創(chuàng)建對象的過程:

? a.開辟空間 ----- new 對象() – 0x001

? b.調(diào)用構(gòu)造方法 – 初始化數(shù)據(jù)

? c.將空間賦值給引用 – 類型 引用 = 0x001

?
創(chuàng)建對象的步驟:a/b/c 或 a/c/b
?
注意:如果創(chuàng)建對象的步驟是a/c/b,多線程的情況下可能會導(dǎo)致獲取的屬性為null
?
解決方案:使用volatile,防止指令重排,創(chuàng)建的步驟必須按照a/b/c

public class A {private static volatile A a;private A(){}public static A getIntance(){if(a == null){synchronized (A.class) {if(a == null){a = new A();}}}return a;}//	public static A getIntance(){
//		
//		if(a != null){
//			return a;
//		}
//		synchronized (A.class) {
//			if(a == null){
//				a = new A();
//			}
//		}
//		return a;
//	}
}
public static void main(String[] args) {A a1 = A.getIntance();A a2 = A.getIntance();A a3 = A.getIntance();A a4 = A.getIntance();System.out.println(a1);System.out.println(a2);System.out.println(a3);System.out.println(a4);}
http://www.risenshineclean.com/news/31670.html

相關(guān)文章:

  • 公司部門解散怎么賠償員工seo推薦
  • 企業(yè)網(wǎng)站優(yōu)化的三層含義網(wǎng)站推廣該怎么做
  • 網(wǎng)站作用微信營銷的優(yōu)勢
  • 網(wǎng)站開發(fā)論文文獻(xiàn)書籍友情鏈接的獲取途徑有哪些
  • 建設(shè)部資質(zhì)網(wǎng)站查詢成人就業(yè)技術(shù)培訓(xùn)機(jī)構(gòu)
  • 視頻網(wǎng)站logo怎么做的html底部友情鏈接代碼
  • 天津和平做網(wǎng)站多少錢怎么創(chuàng)建自己的游戲網(wǎng)站
  • 網(wǎng)站建設(shè)完畢后怎么加后臺線上營銷推廣方案有哪些
  • 網(wǎng)站備案怎么關(guān)閉網(wǎng)站百度推廣多少錢一個(gè)月
  • 網(wǎng)站做線seo的優(yōu)化步驟
  • 手機(jī)系統(tǒng)網(wǎng)站windows優(yōu)化大師怎么徹底刪除
  • 做推文的網(wǎng)站網(wǎng)頁設(shè)計(jì)html代碼大全
  • 長沙 外貿(mào)網(wǎng)站建設(shè)公司價(jià)格交換友鏈要注意什么
  • 網(wǎng)站左邊logo圖標(biāo)怎么做國家免費(fèi)技能培訓(xùn)平臺
  • 網(wǎng)站開發(fā)的初級技術(shù)員南寧網(wǎng)站seo外包
  • 抖音代運(yùn)營詐騙判刑案例濟(jì)南seo優(yōu)化外包服務(wù)
  • wordpress知名站點(diǎn)seo咨詢茂名
  • 一千個(gè)長尾關(guān)鍵詞用一千個(gè)網(wǎng)站做優(yōu)化推廣方案
  • 建筑公司網(wǎng)站應(yīng)該則么做google搜索首頁
  • 短視頻運(yùn)營崗位職責(zé)鶴壁seo推廣
  • 江蘇網(wǎng)站建設(shè)要多少錢哪有網(wǎng)頁設(shè)計(jì)公司
  • 網(wǎng)站安全 掃描成都seo推廣
  • tp框架做的網(wǎng)站最新新聞事件摘抄
  • 河北造價(jià)信息網(wǎng)查詢長沙官網(wǎng)seo技術(shù)
  • 個(gè)人做營利性質(zhì)網(wǎng)站會怎么樣google seo 優(yōu)化
  • 電子商務(wù)網(wǎng)站建設(shè)的作用seo整站優(yōu)化哪家好
  • 萬網(wǎng)網(wǎng)站模板下載seo指的是搜索引擎
  • 定制制作網(wǎng)站價(jià)格今日頭條鄭州頭條新聞
  • 網(wǎng)站的銷售怎么做2023新一輪病毒叫什么名字
  • 海安公司網(wǎng)站建設(shè)建立網(wǎng)站需要多少錢