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

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

線程通信機制-創(chuàng)新互聯(lián)

線程通訊 概念:

多個線程在處理同一個資源,但是處理的動作(線程的任務(wù))卻不相同。?

創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè),為客戶提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗,各類網(wǎng)站都可以開發(fā),成都品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計,建網(wǎng)站費用,建網(wǎng)站多少錢,價格優(yōu)惠,收費合理。線程狀態(tài)
new線程剛被創(chuàng)建,但未并被啟動,還沒被調(diào)用Start()方法
Runnable線程可以在java虛擬器中運行的狀態(tài)可能正在運行自己代碼,也可能沒有,這取決于操作系統(tǒng)處理器。
Blocked當(dāng)一 個線程試圖獲取一 個對象鎖, 而該對象鎖被其他的線程持有,則該線程進入Blocked狀態(tài)
Waiting個線程在等待另一 一個線程執(zhí)行一個(喚醒)動作時,該線程進入Waiting狀態(tài)。?
Timed Waiting同waiting狀態(tài),有幾個方法有超時參數(shù),調(diào)用他們將進入Timed Waiting狀態(tài)。?

Teminated

因為run方法正常退出而死亡,或者因為沒有捕捉的異常終止了run方法而死亡。

??

等待喚醒機制 什么是等待喚醒機制:

等待喚醒機制就是在一個線程進行了規(guī)定操作后,另一個線程就進入等待狀態(tài)(wait()),

等待剛剛進行規(guī)定操作的線程執(zhí)行完他們的指定代碼后,再將處于等待狀態(tài)的這個線程喚醒(notify());

在有多個線程進行等待的時候,如果需要我們可以使用notifyAll()來喚醒所有的等待線程。

等待通知機制的方法

notify():
通知一個在對象上等待的線程,使其從wait方法喚醒。而喚醒的前提是該線程獲取到了對象的鎖。沒有獲取到的線程依舊處以WAITING狀態(tài)。

notifyAll():
通知所有等待在該對象上的線程。

wait():
調(diào)用該方法的線程進入WAITING狀態(tài),只有等待另外線程的通知或被interrupted中斷才會被喚醒。需要注意的是,調(diào)用wait()方法后,會釋放對象的鎖。

圖解

例題——早餐店包子售賣

包子資源類

public class BaoZi {
 
    String name;//包子的名稱
 
    Boolean flag;//包子的狀態(tài)(true表示存在  false 表示不存在)
 
}

早餐店線程

public class ZaoCanDian extends Thread {
    BaoZi baoZi;
 
    //構(gòu)造函數(shù):用來指定線程的名稱和操作資源
    public ZaoCanDian(String name, BaoZi baoZi) {
        super(name);
        this.baoZi = baoZi;
    }
 
    public void run() {
        String threadName = Thread.currentThread().getName();
        int count = 0;
        while (true) {
            synchronized (baoZi) {
                count++;
                if (count >10) {
                    break;
                }
                if (baoZi.flag) {//如果包子存在
                    try {
                        baoZi.wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } else {
                    //如果包子不存在
                    System.out.println(threadName + "開始制作" + baoZi.name);
                    baoZi.flag=true;//更改包子狀態(tài)
                    baoZi.notify();//喚醒同一資源下的其他線程
                }
            }
        }
    }
}

吃貨線程

public class ChiHuo extends Thread{
    BaoZi baoZi;
 
    //構(gòu)造函數(shù):用來指定線程的名稱和操作資源
    public ChiHuo(String name,BaoZi baoZi){
        super(name);
        this.baoZi=baoZi;
    }
    public void run(){
        String threadName=Thread.currentThread().getName();
        int count=0;
        while(true){
            synchronized (baoZi){
                count++;
                if (count>10){
                    break;
                }
                if(baoZi.flag){//如果包子存在
                    System.out.println(threadName+"開始吃"+baoZi.name);
                    baoZi.flag=false;//修改狀態(tài)
                    baoZi.notify();//喚醒其他資源狀態(tài)
                }else{
                    //如果包子不存在
                    try {
                        baoZi.wait();//進入等待狀態(tài)
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }
}

早餐店和吃貨間線程的轉(zhuǎn)換

public class ThreadTest {
    public static void main(String[] args) {
        //定義資源對象
        BaoZi baoZi=new BaoZi();
        baoZi.name="韭菜 雞蛋 五花肉 豆腐";
        baoZi.flag=true;
 
        //定義兩個線程,起名字且操作同一對象
        ChiHuo ch=new ChiHuo("空舊黎夢",baoZi);
        ZaoCanDian zcd=new ZaoCanDian("豪華",baoZi);
 
        //啟動線程
        zcd.start();
        ch.start();
    }
}

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


網(wǎng)站題目:線程通信機制-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://weahome.cn/article/iopse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部