国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

多線程知識點

這篇具有很好參考價值的文章主要介紹了多線程知識點。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.多線程

多線程知識點,多線程,java,開發(fā)語言
多線程知識點,多線程,java,開發(fā)語言
例如:一個短視頻,一個線程復制管理視頻,一個線程負責管理聲音,一個線程負責管理彈幕
進程:Process,程序一旦開始運行就是是一個進程
線程:Thread,一個程序運行后,里面就包含了多個線程

真正的多線程是指有多個cpu,即多核。如果是模擬的多線程,即只有一個cpu,在同一時間點,cpu只能執(zhí)行一個代碼,因為切換的很快,所以就有同時執(zhí)行的錯誤

2.線程的創(chuàng)建

1.繼承Thread類
線程不一定立即執(zhí)行,聽從cpu的安排,交替執(zhí)行

//實現(xiàn)步驟
1.繼承Thread
2.重些run方法
3.對象. start()啟動線程
public class StartThread extends Thread
{
@Override
public void run()
{
}
}
StartThread a=new StartThread();
a.start()

2.實現(xiàn)Runnable接口
接口實現(xiàn)類對象能被多個線程使用
1.實現(xiàn)接口
2.編寫線程方法
3.開啟線程,通過實現(xiàn)Runnable接口來創(chuàng)建線程,啟動線程時需要通過Thread對象。

PrimeRun p = new PrimeRun(143);
new Thread(p).start();

并發(fā)問題:

3.實現(xiàn)Callable接口

3.靜態(tài)代理

使用步驟
1.需要代理對象、實際對象,以及一個抽象接口
2.代理對象、實際對象都要實現(xiàn)接口
3.代理對象中創(chuàng)建構(gòu)造方法,方法參數(shù)為接口類對象
4.在代理對象中定義抽象接口類對象來接收構(gòu)造方法的參數(shù)對象
5.在代理對象中接口的實現(xiàn)方法中,用接收到的變量接口對象調(diào)用實現(xiàn)的接口方法
邏輯,通過代理對象的有參構(gòu)造,將實際對象以參數(shù)的形式傳遞到代理類中,然后在代理類接口的實現(xiàn)方法中,調(diào)用實際類中的實現(xiàn)方法

4.線程停止

1.設(shè)立外部標志位,定義一個公開的方法,通過改變標志位來結(jié)束進程
多線程知識點,多線程,java,開發(fā)語言

5.線程休眠

應用

1.模擬網(wǎng)絡(luò)延時
通過延時可以發(fā)現(xiàn)多線程中出現(xiàn)的問題,如數(shù)據(jù)同步性
2.倒計時
每個對象都有一把鎖,sleep不回釋放鎖

6.線程禮讓

Thread.yield()
正在進行的線程,由運行態(tài)轉(zhuǎn)為就緒態(tài),然后由cpu在就緒態(tài)中選擇另一個線程,禮讓不一定百分百成功

7.線程強制執(zhí)行

線程插隊,強制執(zhí)行插隊的線程
多線程知識點,多線程,java,開發(fā)語言

8.觀測線程的狀態(tài)

Thread.getState()
線程的狀態(tài)
1.創(chuàng)建
2.就緒
3.執(zhí)行
4.阻塞
5.結(jié)束,線程一旦結(jié)束,就不能再被使用

9.線程的優(yōu)先級

thread.setPriority()
多線程知識點,多線程,java,開發(fā)語言

10.守護線程

監(jiān)控用戶線程,用戶線程結(jié)束,守護線程也結(jié)束
thread.setDaemon()
多線程知識點,多線程,java,開發(fā)語言

11.線程同步

并發(fā):同一個對象被多個線程同時操作,如:秒殺,搶票
解決線程的不安全性:隊列+鎖,解決數(shù)據(jù)安全性
synchronized

//修飾代碼塊
synchronized(this){} //修飾當前類
synchronized(類.class){}//修飾其他類
//修飾方法
1.修飾靜態(tài)方法
2.修飾非靜態(tài)方法

案例代碼:
class Thick implements Runnable
{
    private int num=10;
    Boolean flag=true;


    @Override
    public void run()
    {
        try {
            buy();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

    public void buy() throws InterruptedException {
        while (flag)
        {
            Thread.sleep(200);
            if (num>0)
                synchronized (this)
                {
                    System.out.println(Thread.currentThread().getName()+"買到了第"+num--+"票");
                }
            else
            {
                flag=false;
            }
        }
    }
    
 public class CarThick {
    public static void main(String[] args) {
        Thick thick=new Thick();
        new Thread(thick,"張三").start();
        new Thread(thick,"李四").start();
        new Thread(thick,"王二狗").start();
    }
}

12.死鎖

多線程知識點,多線程,java,開發(fā)語言

13.Lock鎖

synchronized鎖的作用一樣,在線程同步的情況下,保證數(shù)據(jù)的原子性

ReentrantLock//可重入鎖
private final ReentrantLock lock=new ReentrantLock();
lock.lock();//加鎖,在數(shù)據(jù)發(fā)生改變的地方,加鎖
lock.uplock;//解鎖,完成數(shù)據(jù)改動后,把鎖給下一個線程

14.生產(chǎn)者與消費者-線程通信

1.生產(chǎn)者
2.消費者
3.線程池
4.消費品

管程法

//線程池
class SynContainer{
    // 需要一個容器大小
    Bug[] bugs = new Bug[10];
    // 容器計算器
    int count = 0;

    // 生產(chǎn)者放入bug
    public synchronized void push(Bug bug){
        // 如果容器滿了,就需要等待消滅bug
        if(count==bugs.length){
            // 通知消滅bug者消滅,生產(chǎn)bug等待
            try {
                //導致當前線程等待,直到另一個線程調(diào)用該對象的 notify()方法或 notifyAll()方法。
                this.wait();

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        // 如果沒有滿,我們就需要繼續(xù)生產(chǎn)bug
        bugs[count] = bug;
        count++;

        // 可以通知消滅者消滅了
        this.notifyAll();
        // notifyAll喚醒正在等待對象監(jiān)視器的所有線程。
    }

    // 消滅者消滅bug
    public synchronized Bug pop(){

        // 判斷能否消滅
        if (count == 0){
            // 等待生產(chǎn)者生產(chǎn),消滅者等待
            try {
                this.wait();

            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        // 如果可以消滅
        count--;
        Bug bug = bugs[count];

        // 消滅完了,通知生產(chǎn)者生產(chǎn)

        this.notifyAll();
        try {
            System.out.println("通知生產(chǎn)者");
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        return bug;

    }
//生產(chǎn)者
class Productor extends Thread{

    SynContainer container;

    public Productor(SynContainer container){
        this.container = container;
    }

    // 生產(chǎn)
    @Override
    public void run() {
        for (int i = 0; i <=100; i++) {
            container.push(new Bug(i));
            System.out.println("生產(chǎn)了"+i+"個bug");
        }
    }
}

//消費者
class Consumer extends Thread{

    SynContainer container;

    public Consumer(SynContainer container){
        this.container = container;
    }

    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            System.out.println("消滅了-->"+container.pop().id+"個bug");
        }
    }
}
//消費品
class Bug{
    int id;// bug編號
    public Bug(int id){
        this.id = id;
    }
}
//測試
public class ProviderAndConsumer
{
    public static void main(String[] args) {
        SynContainer container = new SynContainer();
        new Productor(container).start();
        new Consumer(container).start();
    }
}

15.線程池

避免重復的創(chuàng)建銷毀線程,減少資源浪費,類似于數(shù)據(jù)庫連接池
多線程知識點,多線程,java,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-672060.html

到了這里,關(guān)于多線程知識點的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 全靠這份Java知識點PDF大全,Java開發(fā)者必須收藏的8個開源庫

    全靠這份Java知識點PDF大全,Java開發(fā)者必須收藏的8個開源庫

    自我介紹 項目中的監(jiān)控:那個監(jiān)控指標常見的有哪些? 微服務涉及到的技術(shù)以及需要注意的問題有哪些? 注冊中心你了解了哪些? consul 的可靠性你了解嗎? consul 的機制你有沒有具體深入過?有沒有和其他的注冊中心對比過? 項目用 Spring 比較多,有沒有了解 Spring 的原理

    2024年03月23日
    瀏覽(31)
  • Android 開發(fā)必備知識點及面試題匯總(Android+Java+算法+性能優(yōu)化+四大組件……),騰訊安卓開發(fā)面試

    Android 開發(fā)必備知識點及面試題匯總(Android+Java+算法+性能優(yōu)化+四大組件……),騰訊安卓開發(fā)面試

    5.請介紹下 AsyncTask的內(nèi)部實現(xiàn),適用的場景是 AsyncTask 內(nèi)部也是 Handler 機制來完成的,只不過 Android 提供了執(zhí)行框架來提供線程池來 執(zhí)行相應地任務,因為線程池的大小問題,所以 AsyncTask 只應該用來執(zhí)行耗時時間較短的任務, 比如 HTTP 請求,大規(guī)模的下載和數(shù)據(jù)庫的更改不

    2024年04月15日
    瀏覽(26)
  • 面試知識點:notify是隨機喚醒線程嗎(喚醒線程順序)?

    面試知識點:notify是隨機喚醒線程嗎(喚醒線程順序)?

    做 Java 開發(fā)的小伙伴,對 wait 方法和 notify 方法應該都比較熟悉,這兩個方法在線程通訊中使用的頻率非常高,但對于 notify 方法的喚醒順序,有很多小伙伴的理解都是錯誤的,有很多人會認為 notify 是隨機喚醒的,但它真的是隨機喚醒的嗎? 帶著這個疑問,我們嘗試休眠 1

    2024年01月24日
    瀏覽(88)
  • Linux知識點 -- Linux多線程(三)

    Linux知識點 -- Linux多線程(三)

    持有鎖的線程會頻繁進入臨界區(qū)申請臨界資源,造成其他進程饑餓的問題; 這本身是沒有錯的,但是不合理; 線程同步:就是線程按照一定的順序,進行臨界資源的訪問;主要就是為了解決訪問臨界資源和理性的問題;在保證數(shù)據(jù)安全的前提下,讓線程能夠按照某種特定的

    2024年02月11日
    瀏覽(20)
  • Linux知識點 -- Linux多線程(四)

    Linux知識點 -- Linux多線程(四)

    一種線程使用模式。線程過多會帶來調(diào)度開銷,進而影響緩存局部性和整體性能。而線程池維護著多個線程,等待著監(jiān)督管理者分配可并發(fā)執(zhí)行的任務。這避免了在處理短時間任務時創(chuàng)建與銷毀線程的代價。線程池不僅能夠保證內(nèi)核的充分利用,還能防止過分調(diào)度??捎镁€程

    2024年02月10日
    瀏覽(29)
  • 【C#】知識點實踐序列之Lock的輸出多線程信息

    【C#】知識點實踐序列之Lock的輸出多線程信息

    大家好,我是全棧小5,歡迎來到《小5講堂之知識點實踐序列》文章。 2024年第2篇文章,此篇文章是C#知識點實踐序列之Lock知識點,博主能力有限,理解水平有限,若有不對之處望指正! 本篇在Lock鎖定代碼塊輸出多線程信息,用于判斷是否是同一個線程還是不同線程。 上篇

    2024年02月03日
    瀏覽(98)
  • C語言知識點匯總

    C語言知識點匯總

    C語言知識點保姆級總結(jié),這不得進你的收藏夾吃灰?! 拖了很久的C語言所學知識的簡單小結(jié),內(nèi)容有點多,第一次總結(jié)也可能有錯誤或者不全面,歡迎隨時補充說明! ? 用不同數(shù)據(jù)類型所定義的變量所占空間大小不一樣,定義的變量不是保存于數(shù)據(jù)類型中,而是因為只有

    2024年01月23日
    瀏覽(26)
  • c#多線程—基礎(chǔ)概念到“雙色球”項目實現(xiàn)(附知識點目錄、代碼、視頻)

    c#多線程—基礎(chǔ)概念到“雙色球”項目實現(xiàn)(附知識點目錄、代碼、視頻)

    總結(jié):視頻中對于多線程講的非常透徹,從線程基礎(chǔ)概念—.net不同版本出現(xiàn)的線程方法—多線程常出現(xiàn)問題—雙色球項目實踐,每個知識點都有代碼實操,受益匪淺。附上學習筆記和實操代碼。 視頻 線程:程序執(zhí)行的最小單位,任何操作都是由線程完成的,使用同步時,資

    2024年02月11日
    瀏覽(89)
  • JQuery、JSON、AJAX、XML、IO流、多線程、反射核心知識點詳解

    一、什么是JQuery ????JQuery是JavaScript的一個框架,對js的封裝,使得js簡單易學 ????優(yōu)點: ????????1、不用考慮瀏覽器兼容性問題 ????????2、jquery擁有強大的選擇器,簡化了js代碼 ????????3、jquery提供了很多系統(tǒng)函數(shù),直接調(diào)用 二、版本 ????????1.x版本:兼

    2024年02月07日
    瀏覽(18)
  • [知識點整理]中科院/國科大 自然語言處理nlp 期末考試知識點整理

    [知識點整理]中科院/國科大 自然語言處理nlp 期末考試知識點整理

    本文為2022秋網(wǎng)安學院的自然語言處理課程期末復習知識點整理,水平有限,整理的答案可能有錯誤或遺漏,歡迎大家指正。 文章的第二部分內(nèi)容參考了學校學姐的文章,文章寫的很好,大家可以關(guān)注她: (133條消息) 【一起入門NLP】中科院自然語言處理期末考試*總復習*:考

    2024年02月09日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包