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

資訊專欄INFORMATION COLUMN

線程系列二、線程的活躍性

wow_worktile / 1042人閱讀

1、死鎖

①什么是死鎖?

雙方因為互相等待對方的資源而進入了循環(huán)等待的過程

②產(chǎn)生死鎖的條件?

1、環(huán)路等待

2、持有并等待

3、互斥

4、不剝奪

必須滿足以上4個條件,才會產(chǎn)生死鎖

④示例代碼

public static void main(String[] args) {
    new T1().start();
    new T2().start();
}

static class T1 extends Thread {

    @Override
    public void run() {
        a();
    }

    public void a() {
        while (true) {
            synchronized (T1.class) {
                synchronized (T2.class) {
                    System.out.println("a");
                }
            }
        }
    }
}

static class T2 extends Thread {
    @Override
    public void run() {
        b();
    }

    public void b() {
        while (true) {
            synchronized (T2.class) {
                synchronized (T1.class) {
                    System.out.println("b");
                }
            }
        }
    }
}

解釋:

互斥:T1和T2存在鎖互斥條件

環(huán)路等待及持有并等待:T1持有T1鎖,等待T2鎖;T2持有T2鎖,等待T1鎖。

操作系統(tǒng)的不剝奪~~

⑤死鎖的檢測工具

jconsole  // 可直接檢測死鎖
jstack // 查看線程堆棧信息

⑥死鎖的解決方法

1、同樣的加鎖順序

2、加鎖限時,例如使用Lock

2、線程饑餓

①什么是線程饑餓?

線程饑餓是指線程得不到運行

②為什么會產(chǎn)生線程饑餓?

1、高優(yōu)先級線程搶占低優(yōu)先級線程的CPU時間片,導致低優(yōu)先級線程無法執(zhí)行

2、線程被永久阻塞在等待進入同步塊的狀態(tài),其他線程總是能在該線程之前持續(xù)對該同步塊進行訪問

③解決方案

1、避免使用優(yōu)先級

2、使用公平鎖

3、活鎖

活鎖不會阻塞線程,但是線程不能繼續(xù)執(zhí)行。因為線程一直在執(zhí)行重復的操作,但是總會丟失。

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

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76680.html

相關文章

  • 線程學習筆記(2):多線程基礎

    摘要:和方法用來設置線程是否成為守護線程和判斷線程是否是守護線程。守護線程依賴于創(chuàng)建它的線程,隨它的消亡而消亡。使用提供的方法,提醒線程終止,但是否真正終止由線程自己決定。參考實戰(zhàn)高并發(fā)程序設計多線程干貨系列一多線程基礎 一、如何創(chuàng)建多線程 1、繼承Thread類 public class MyThread extends Thread { @Override public ...

    HelKyle 評論0 收藏0
  • Java并發(fā)編程筆記(

    摘要:本文探討并發(fā)中的其它問題線程安全可見性活躍性等等。當閉鎖到達結束狀態(tài)時,門打開并允許所有線程通過。在從返回時被叫醒時,線程被放入鎖池,與其他線程競爭重新獲得鎖。 本文探討Java并發(fā)中的其它問題:線程安全、可見性、活躍性等等。 在行文之前,我想先推薦以下兩份資料,質量很高:極客學院-Java并發(fā)編程讀書筆記-《Java并發(fā)編程實戰(zhàn)》 線程安全 《Java并發(fā)編程實戰(zhàn)》中提到了太多的術語...

    NickZhou 評論0 收藏0
  • Java并發(fā)編程之原子性操作

    摘要:將與當前線程建立一對一關系的值移除。為了讓方法里的操作具有原子性,也就是在一個線程執(zhí)行這一系列操作的同時禁止其他線程執(zhí)行這些操作,提出了鎖的概念。 上頭一直在說以線程為基礎的并發(fā)編程的好處了,什么提高處理器利用率啦,簡化編程模型啦。但是磚家們還是認為并發(fā)編程是程序開發(fā)中最不可捉摸、最詭異、最扯犢子、最麻煩、最惡心、最心煩、最容易出錯、最不符合社會主義核心價值觀的一個部分~ 造成這么多最...

    instein 評論0 收藏0
  • 譯文-G1收集器

    摘要:原文出處設計的一個重要目標是設置階段的持續(xù)時長和頻率,因為垃圾收集器可預測,可配置。收集器盡自己最大努力高概率實現(xiàn)目標但不是必然,它會是硬實時。因此名稱是收集器。運行不同使用獨立的收集器。 原文出處:G1 – Garbage First G1設計的一個重要目標是設置stop-the-world階段的持續(xù)時長和頻率,因為垃圾收集器可預測,可配置。事實上,G1是一款軟實時的收集器,意味著你...

    missonce 評論0 收藏0
  • 【J2SE】java并發(fā)編程實戰(zhàn) 讀書筆記( 一、、三章)

    摘要:發(fā)布的對象內部狀態(tài)可能會破壞封裝性,使程序難以維持不變性條件。不變性線程安全性是不可變對象的固有屬性之一。可變對象必須通過安全方式來發(fā)布,并且必須是線程安全的或者有某個鎖保護起來。 線程的優(yōu)缺點 線程是系統(tǒng)調度的基本單位。線程如果使用得當,可以有效地降低程序的開發(fā)和維護等成本,同時提升復雜應用程序的性能。多線程程序可以通過提高處理器資源的利用率來提升系統(tǒng)的吞吐率。與此同時,在線程的使用...

    QLQ 評論0 收藏0

發(fā)表評論

0條評論

wow_worktile

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<