真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java多線程(juc講解一)-創(chuàng)新互聯(lián)

java并發(fā)知識(shí)體系

java并發(fā)知識(shí)的體系如下:
在這里插入圖片描述

成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)公司).為客戶提供專業(yè)的成都西云數(shù)據(jù)中心,四川各地服務(wù)器托管,成都西云數(shù)據(jù)中心、多線服務(wù)器托管.托管咨詢專線:13518219792并發(fā)鎖說(shuō)明

多線程編程中,會(huì)出現(xiàn)臨界資源的被多個(gè)線程同時(shí)訪問(wèn)的情況,由于線程執(zhí)行的過(guò)程是不可控的,所以需要采用同步機(jī)制來(lái)進(jìn)行臨界資源的訪問(wèn)。由此引出來(lái)鎖機(jī)制,加鎖的目的是,串行化訪問(wèn)臨界資源,任一時(shí)刻只有一個(gè)線程可以獲取資源。java中的鎖如下分類
在這里插入圖片描述

java線程生命狀態(tài)

在這里插入圖片描述

synchronized使用和原理

同步static類方法,鎖的是當(dāng)前實(shí)例對(duì)象
同步類方法,鎖的是當(dāng)前對(duì)象
同步代碼塊,鎖的是括號(hào)里面的對(duì)象

private  static  int count = 0;
    public static void main(String[] args) {for (int i = 0; i<10 ; i++) {Thread thread = new Thread(new Runnable() {@Override
                public void run() {  TestAQS testAQS = new TestAQS();
                  testAQS.test1();
                }
            });
            thread.start();
        }
    }

    public static synchronized void test(){count++;
        System.out.println("count的值是:"+count);
    }

    public  synchronized void test1(){count++;
        System.out.println("count的值是:"+count);
    }

我們可以看到當(dāng)前類加synchronized 如果不是單例的那么會(huì)導(dǎo)致失效,所以此時(shí)要用到單例模式,保證對(duì)象只有一個(gè)

private  static  int count = 0;
    public static void main(String[] args) {for (int i = 0; i<10 ; i++) {Thread thread = new Thread(new Runnable() {@Override
                public void run() {  TestAQS testAQS = getInstance();
                  testAQS.test1();
                }
            });
            thread.start();
        }
    }

    public static synchronized void test(){count++;
        System.out.println("count的值是:"+count);
    }

    public  synchronized void test1(){count++;
        System.out.println("count的值是:"+count);
    }

    private static volatile TestAQS instance = null;
    private TestAQS() {}
    public static TestAQS getInstance() {if (instance == null) {synchronized (TestAQS.class) {if (instance == null) {instance = new TestAQS();
                }
            }
        }
        return instance;
    }

底層原理:
JVM內(nèi)置鎖通過(guò)synchronized 使用,通過(guò)內(nèi)部對(duì)象Monitor(監(jiān)視器鎖)實(shí)現(xiàn),基于進(jìn)入和退出Monitor對(duì)象實(shí)現(xiàn)方法與代碼塊同步,監(jiān)視器鎖的實(shí)體依賴底層操作系統(tǒng)Mutex Lock(互斥鎖)實(shí)現(xiàn)。
在這里插入圖片描述

volatile說(shuō)明

volatile保證了變量的可見(jiàn)性,不能保證變量的原子性。
volatile關(guān)鍵字可以禁止指令重排,保證代碼前后執(zhí)行順序。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧


分享文章:java多線程(juc講解一)-創(chuàng)新互聯(lián)
分享URL:http://weahome.cn/article/gigss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部