国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Java? 教程(并發(fā)活性)

KaltZK / 3071人閱讀

并發(fā)活性

并發(fā)應(yīng)用程序及時(shí)執(zhí)行的能力被稱(chēng)為其活性,本節(jié)描述了最常見(jiàn)的活性問(wèn)題,死鎖,并繼續(xù)簡(jiǎn)要描述其他兩個(gè)活性問(wèn)題,饑餓和活鎖。

死鎖

死鎖描述了兩個(gè)或多個(gè)線程永遠(yuǎn)被阻塞,等待彼此的情況,這是一個(gè)例子。

Alphonse和Gaston是朋友,是禮貌的忠實(shí)信徒,禮貌的一個(gè)嚴(yán)格規(guī)則是,當(dāng)你向朋友鞠躬時(shí),你必須一直鞠躬,直到你的朋友有機(jī)會(huì)還禮,不幸的是,這條規(guī)則沒(méi)有考慮到兩個(gè)朋友可能同時(shí)互相鞠躬的可能性,這個(gè)示例應(yīng)用程序Deadlock模擬了這種可能性:

public class Deadlock {
    static class Friend {
        private final String name;
        public Friend(String name) {
            this.name = name;
        }
        public String getName() {
            return this.name;
        }
        public synchronized void bow(Friend bower) {
            System.out.format("%s: %s"
                + "  has bowed to me!%n", 
                this.name, bower.getName());
            bower.bowBack(this);
        }
        public synchronized void bowBack(Friend bower) {
            System.out.format("%s: %s"
                + " has bowed back to me!%n",
                this.name, bower.getName());
        }
    }

    public static void main(String[] args) {
        final Friend alphonse =
            new Friend("Alphonse");
        final Friend gaston =
            new Friend("Gaston");
        new Thread(new Runnable() {
            public void run() { alphonse.bow(gaston); }
        }).start();
        new Thread(new Runnable() {
            public void run() { gaston.bow(alphonse); }
        }).start();
    }
}

當(dāng)Deadlock運(yùn)行時(shí),兩個(gè)線程在嘗試調(diào)用bowBack時(shí)極有可能會(huì)阻塞,兩個(gè)阻塞都不會(huì)結(jié)束,因?yàn)槊總€(gè)線程都在等待另一個(gè)線程退出bow

饑餓和活鎖

饑餓和活鎖問(wèn)題遠(yuǎn)沒(méi)有死鎖常見(jiàn),但仍然是每個(gè)并發(fā)軟件設(shè)計(jì)人員可能遇到的問(wèn)題。

饑餓

饑餓描述了一種情況,即線程無(wú)法獲得對(duì)共享資源的定期訪問(wèn),并且無(wú)法取得進(jìn)展,當(dāng)“貪婪”線程使共享資源長(zhǎng)時(shí)間不可用時(shí)會(huì)發(fā)生這種情況。例如,假設(shè)一個(gè)對(duì)象提供了一個(gè)通常需要很長(zhǎng)時(shí)間才能返回的同步方法,如果一個(gè)線程頻繁地調(diào)用此方法,其他也需要頻繁同步訪問(wèn)同一對(duì)象的線程將經(jīng)常被阻塞。

活鎖

一個(gè)線程經(jīng)常響應(yīng)另一個(gè)線程的操作,如果另一個(gè)線程的操作也是對(duì)另一個(gè)線程的操作的響應(yīng),則可能導(dǎo)致活鎖。與死鎖一樣,活鎖線程無(wú)法取得進(jìn)一步進(jìn)展,但是,線程不會(huì)被阻塞 — 它們只是太忙于回應(yīng)彼此而無(wú)法繼續(xù)工作。這相當(dāng)于兩個(gè)試圖在走廊里互相通過(guò)的人:Alphonse向左移動(dòng)讓Gaston通過(guò),而Gaston向右移動(dòng)讓Alphonse通過(guò),看到他們?nèi)匀换ハ嘧枞珹lphone向右移動(dòng),而Gaston向左移動(dòng),他們還在互相阻塞,所以...。

上一篇:同步 下一篇:守護(hù)阻塞

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73034.html

相關(guān)文章

  • Java? 教程(同步)

    同步 線程主要通過(guò)共享對(duì)字段和引用對(duì)象的引用字段的訪問(wèn)來(lái)進(jìn)行通信,這種通信形式非常有效,但可能產(chǎn)生兩種錯(cuò)誤:線程干擾和內(nèi)存一致性錯(cuò)誤,防止這些錯(cuò)誤所需的工具是同步。 但是,同步可能會(huì)引入線程競(jìng)爭(zhēng),當(dāng)兩個(gè)或多個(gè)線程同時(shí)嘗試訪問(wèn)同一資源并導(dǎo)致Java運(yùn)行時(shí)更慢地執(zhí)行一個(gè)或多個(gè)線程,甚至?xí)和K鼈儓?zhí)行,饑餓和活鎖是線程競(jìng)爭(zhēng)的形式。 本節(jié)包括以下主題: 線程干擾描述了當(dāng)多個(gè)線程訪問(wèn)共享數(shù)據(jù)時(shí)如何引入錯(cuò)誤。...

    Edison 評(píng)論0 收藏0
  • Java? 教程(目錄)

    Java? 教程 Java教程是為JDK 8編寫(xiě)的,本頁(yè)面中描述的示例和實(shí)踐沒(méi)有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語(yǔ)言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個(gè)完整的工作示例和數(shù)十個(gè)課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識(shí)的路徑 這些教程以書(shū)籍的形式提供,如Java教程,第六版,前往Amazon.com購(gòu)買(mǎi)。 入門(mén) 介紹Java技術(shù)和安裝Java開(kāi)發(fā)軟件并使用...

    lifesimple 評(píng)論0 收藏0
  • Java? 教程(Lock對(duì)象)

    Lock對(duì)象 同步代碼依賴(lài)于簡(jiǎn)單的可重入鎖,這種鎖易于使用,但有許多限制,java.util.concurrent.locks包支持更復(fù)雜的鎖定語(yǔ)法,我們不會(huì)詳細(xì)檢查這個(gè)包,而是將重點(diǎn)放在其最基本的接口Lock上。 Lock對(duì)象的工作方式與同步代碼使用的隱式鎖定非常相似,與隱式鎖一樣,一次只有一個(gè)線程可以擁有一個(gè)Lock對(duì)象,Lock對(duì)象還通過(guò)其關(guān)聯(lián)的Condition對(duì)象支持wait/notif...

    RobinQu 評(píng)論0 收藏0
  • 動(dòng)力節(jié)點(diǎn)JavaNIO教程,輕松攻破Java NIO技術(shù)壁壘

    摘要:學(xué)習(xí)和掌握技術(shù)已經(jīng)不是一個(gè)攻城獅的加分技能,而是一個(gè)必備技能。是雙向的,不僅可以讀取數(shù)據(jù)還能保存數(shù)據(jù),程序不能直接讀寫(xiě)通道,只與緩沖區(qū)交互為了讓大家不被高并發(fā)與大量連接處理問(wèn)題所困擾,動(dòng)力節(jié)點(diǎn)推出了高效處理模型應(yīng)用教程。 大家肯定了解Java IO, 但是對(duì)于NIO一般是陌生的,而現(xiàn)在使用到NIO的場(chǎng)景越來(lái)越多,很多技術(shù)框...

    ralap 評(píng)論0 收藏0
  • Java? 教程(守護(hù)阻塞)

    守護(hù)阻塞 線程通常必須協(xié)調(diào)他們的操作,最常見(jiàn)的協(xié)調(diào)用法是守護(hù)阻塞,這樣的阻塞首先輪詢(xún)一個(gè)條件,該條件必須為真,然后阻塞才能繼續(xù),要正確執(zhí)行此操作,需要執(zhí)行許多步驟。 例如,假設(shè)guardedJoy是一個(gè)方法,在另一個(gè)線程設(shè)置了共享變量joy之前,該方法不能繼續(xù),理論上,這種方法可以簡(jiǎn)單地循環(huán)直到滿足條件,但該循環(huán)是浪費(fèi)的,因?yàn)樗诘却龝r(shí)持續(xù)執(zhí)行。 public void guardedJoy() ...

    ivyzhang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<