激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 詳解java 對(duì)象鎖與類鎖

詳解java 對(duì)象鎖與類鎖

2020-09-04 13:51孟應(yīng)杰 Java教程

這篇文章主要介紹了java 對(duì)象鎖與類鎖的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下

一.什么是對(duì)象鎖

對(duì)象鎖也叫方法鎖,是針對(duì)一個(gè)對(duì)象實(shí)例的,它只在該對(duì)象的某個(gè)內(nèi)存位置聲明一個(gè)標(biāo)識(shí)該對(duì)象是否擁有鎖,所有它只會(huì)鎖住當(dāng)前的對(duì)象,而并不會(huì)對(duì)其他對(duì)象實(shí)例的鎖產(chǎn)生任何影響,不同對(duì)象訪問(wèn)同一個(gè)被synchronized修飾的方法的時(shí)候不會(huì)阻塞,
例如:

java" id="highlighter_755270">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyObject {
  private synchronized void method1(){
    try {
      System.out.println(Thread.currentThread().getName());
      Thread.sleep(4000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
  //synchronized修飾為同步方法,如果先調(diào)用method1,則4秒后才會(huì)調(diào)用method2
  //如果不用synchronized修飾,則可以直接異步調(diào)用,沒(méi)有影響
  private void method2(){
    System.out.println(Thread.currentThread().getName());
  }
}

創(chuàng)建一個(gè)類,synchronized修飾普通方法,即為對(duì)象鎖,那么這個(gè)時(shí)候,多個(gè)線程訪問(wèn)同一個(gè)對(duì)象實(shí)例的這個(gè)方法時(shí),是會(huì)同步的,并且只有一個(gè)線程執(zhí)行完,另一個(gè)線程才會(huì)執(zhí)行:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
    //創(chuàng)建一個(gè)對(duì)象
    MyObject myObject=new MyObject();
 
    Thread t1=new Thread (new Runnable() {
      @Override
      public void run() {
        myObject.method1();
      }
    },"t1");
    Thread t2=new Thread (new Runnable() {
      @Override
      public void run() {
        myObject.method1();
      }
    },"t2");
    t1.start();
    t2.start();
}

即,打印t14秒之后,t2才會(huì)打印,因?yàn)閮蓚€(gè)線程調(diào)用的是同一個(gè)對(duì)象實(shí)例的方法,即同一把鎖,所有會(huì)同步執(zhí)行
而如果是不同對(duì)象實(shí)例的話,則沒(méi)有影響,因?yàn)閮蓚€(gè)線程調(diào)用的是不同實(shí)例的鎖方法,即不是同一把鎖,沒(méi)有關(guān)系,所以會(huì)正常輸出,不會(huì)同步

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
    //創(chuàng)建兩個(gè)對(duì)象
    MyObject myObject=new MyObject();
    MyObject myObject01=new MyObject();
 
    Thread t1=new Thread (new Runnable() {
      @Override
      public void run() {
        myObject.method1();
      }
    },"t1");
    Thread t2=new Thread (new Runnable() {
      @Override
      public void run() {
        myObject01.method1();
      }
    },"t2");
    t1.start();
    t2.start();
  }

二 對(duì)象鎖的幾種形式以及應(yīng)用案例

1 synchronized修飾普通方法屬于對(duì)象鎖,

詳解java 對(duì)象鎖與類鎖

2 synchronized修飾的代碼塊傳入this也屬于對(duì)象鎖

應(yīng)用:減小鎖粒度,第二種形式就比較好,比如A線程調(diào)用一個(gè)同步方法需要很長(zhǎng)時(shí)間,那么B就要等待很長(zhǎng)時(shí)間,這個(gè)時(shí)候可以將必須同步的代碼使用synchronized代碼塊, 不需要同步的先執(zhí)行,節(jié)約資源

詳解java 對(duì)象鎖與類鎖

類鎖

類鎖是鎖住整個(gè)類,當(dāng)有多個(gè)線程來(lái)聲明這個(gè)類的對(duì)象時(shí)候?qū)?huì)被阻塞,直到擁有這個(gè)類鎖的對(duì)象唄銷毀或者主動(dòng)釋放了類鎖,這個(gè)時(shí)候在被阻塞的線程被挑選出一個(gè)占有該類鎖,聲明該類的對(duì)象。其他線程繼續(xù)被阻塞住

(上面百度的),即一句話,不管多少個(gè)對(duì)象,多少個(gè)對(duì)象,共用一把多,且只有一把,不管怎么調(diào)用,都會(huì)同步

上面方法加static變類鎖:

?
1
2
3
4
5
6
7
8
private static synchronized void method1(){
    try {
      System.out.println(Thread.currentThread().getName());
      Thread.sleep(4000);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

  這個(gè)時(shí)候無(wú)論線程調(diào)用的是多少個(gè)對(duì)象實(shí)例的方法,都會(huì)同步

四 類鎖形式

synchronized修飾靜態(tài)方法屬于類鎖

詳解java 對(duì)象鎖與類鎖

以上就是詳解java 對(duì)象鎖與類鎖的詳細(xì)內(nèi)容,更多關(guān)于java對(duì)象鎖與類鎖的資料請(qǐng)關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://www.yuque.com/mengyingjie/java/bxtyq0

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 一级电影在线观看 | 天天碰天天操 | 麻豆一二区| 久久亚洲精品视频 | 亚洲视频在线视频 | 亚洲成人高清电影 | 日韩视频一区二区在线观看 | 久久精品一区二区三区国产主播 | 久草视频免费 | 久久精品a一级国产免视看成人 | 亚洲电影免费观看国语版 | 国产高潮失禁喷水爽到抽搐视频 | 国产精品999在线观看 | 高清一区二区在线观看 | 久久久精品视频免费看 | 一区二区三区四区国产精品视频 | 欧美乱淫 | 亚洲视频在线观看免费视频 | 久久久久电影网站 | 在线高清中文字幕 | 一本一道久久久a久久久精品91 | 操操影视 | 一级毛片看 | 国产午夜精品久久久久久久蜜臀 | 国产精品一区二区x88av | 欧美三级欧美成人高清www | 免费久久久久久 | 成人免费观看毛片 | 最新中文字幕在线 | 俄罗斯16一20sex牲色另类 | 成人国产在线视频 | 妇子乱av一区二区三区 | 中国a毛片| 毛片免费在线播放 | 久久成人视屏 | 日韩在线播放中文字幕 | 91久久线看在观草草青青 | 亚洲国产视频在线 | 女18一级大黄毛片免费女人 | 国产在线欧美日韩 | 人人舔人人舔 |