上下文切換與死鎖

多線程一定快嗎纲菌?


答案是不一定钱慢。當(dāng)并發(fā)執(zhí)行的累積數(shù)量一定以內(nèi),并行會比串行執(zhí)行要慢缘眶,此處用的測試用例是累加嘱根,那么為什么會出現(xiàn)這種情況呢?

這是因為線程的創(chuàng)建的上下文切換的開銷

上下文切換

單核處理器也支持多線程執(zhí)行代碼巷懈,CPU通過給每個線程分配CPU時間片來實現(xiàn)這個機制该抒,因為時間片非常短,所以CPU通過不停切換線程執(zhí)行的顶燕,時間一般是即使毫秒(ms)


public class ConcurrencyTest {
    private  static final  long count = 100001;
    
    public static void main(String[] args) throws InterruptedException{
        concurrency();
        serial();
    }

    private static void concurrency() throws InterruptedException {
        long start = System.currentTimeMillis();
        Thread thread = new Thread(new Runnable() {
            @Override
            public void run() {
                int a = 0;
                for(long i = 0;i<count;i++) {
                    a += 5;
                }
            }
            
        });
        thread.start();
        int b = 0;
        for(long i = 0;i<count;i++) {
            b--;
        }
        long time = System.currentTimeMillis()-start;
        thread.join();
        System.out.println("concurrency:"+time+"ms,"+" b="+b);
    }

    private static void serial() {
        long start = System.currentTimeMillis();
        int a = 0;
        for(long i =0;i<count;i++) {
            a +=5;
        }
        int b = 0;
        for(long i =0;i<count;i++) {
            b--;
        }
        long time = System.currentTimeMillis() - start;
        System.out.println("serial:"+time+"ms,"+" b="+b);
    }
}

這就像我們同時讀兩本書凑保,當(dāng)我們在讀一本英文的技術(shù)書時,發(fā)現(xiàn)某個單詞不認識涌攻,于是便打開中英文字典欧引,但是在放下英文技術(shù)書之前,大腦必須先記住這本書讀到了多少頁的第多少行恳谎,等查完單詞之后芝此,能夠繼續(xù)讀這本書。這樣的切換是會影響讀書效率的因痛,同樣上下文切換也會影響多線程的執(zhí)行速度

如何減少上下文切換呢婚苹?

無鎖并發(fā)編程 使用一下辦法來避免使用鎖
CAS算法 Compare And Swap 即比較和替換
使用最小線程數(shù)

死鎖列子

package com.hunau;

public class DeadLockDemo {
    
    private static String  A = "A";

    private static String  B = "B";
    
    public static void main(String[] args) {
        new DeadLockDemo().deadLock();
    }

    private void deadLock() {
        Thread t1 = new Thread(new Runnable() {

            @Override
            public void run() {
                synchronized(A) {
                    try {
                        Thread.currentThread().sleep(2000);
                    }catch(InterruptedException e) {
                        e.printStackTrace();
                    }
                    
                    synchronized(B) {
                        System.out.println("1");
                    }
                }
                
            }
            
        });
        
        Thread t2 = new Thread(new Runnable() {

            @Override
            public void run() {
                synchronized(B) {
                    synchronized(A) {
                        System.out.println("2");
                    }
                }
                
            }
            
        }) ;
        t1.start();
        t2.start();
    }
}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鸵膏,隨后出現(xiàn)的幾起案子膊升,更是在濱河造成了極大的恐慌,老刑警劉巖谭企,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廓译,死亡現(xiàn)場離奇詭異评肆,居然都是意外死亡,警方通過查閱死者的電腦和手機责循,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門糟港,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人院仿,你說我怎么就攤上這事秸抚。” “怎么了歹垫?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵剥汤,是天一觀的道長。 經(jīng)常有香客問我排惨,道長吭敢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任暮芭,我火速辦了婚禮鹿驼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辕宏。我一直安慰自己畜晰,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布瑞筐。 她就那樣靜靜地躺著凄鼻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪聚假。 梳的紋絲不亂的頭發(fā)上块蚌,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天,我揣著相機與錄音膘格,去河邊找鬼峭范。 笑死,一個胖子當(dāng)著我的面吹牛闯袒,可吹牛的內(nèi)容都是我干的虎敦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼政敢,長吁一口氣:“原來是場噩夢啊……” “哼其徙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起喷户,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤唾那,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闹获,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡期犬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了避诽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龟虎。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖沙庐,靈堂內(nèi)的尸體忽然破棺而出鲤妥,到底是詐尸還是另有隱情,我是刑警寧澤拱雏,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布棉安,位于F島的核電站,受9級特大地震影響铸抑,放射性物質(zhì)發(fā)生泄漏贡耽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一鹊汛、第九天 我趴在偏房一處隱蔽的房頂上張望蒲赂。 院中可真熱鬧,春花似錦刁憋、人聲如沸凳宙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至届囚,卻和暖如春有梆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背意系。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工泥耀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蛔添。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓痰催,卻偏偏與公主長得像,于是被迫代替她去往敵國和親迎瞧。 傳聞我的和親對象是個殘疾皇子夸溶,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容