国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

婚禮策劃網(wǎng)站模板中文網(wǎng)絡營銷課程學什么

婚禮策劃網(wǎng)站模板中文,網(wǎng)絡營銷課程學什么,英文版企業(yè)網(wǎng)站布局設計,nginx即代理又做網(wǎng)站并發(fā)和并行 并發(fā) 在同一時刻,有多個指令在單個CPU上交替執(zhí)行 并行 在同一時刻,有多個指令在多個CPU上同時執(zhí)行 多線程的實現(xiàn)方式 繼承Thread類的方式 注意給線程設置名字,啟動線程等操作 實現(xiàn)Runable的方式 自己創(chuàng)建一個類然后去實現(xiàn)…

在這里插入圖片描述

并發(fā)和并行

并發(fā)

在同一時刻,有多個指令在單個CPU上交替執(zhí)行

并行

在同一時刻,有多個指令在多個CPU上同時執(zhí)行

多線程的實現(xiàn)方式

繼承Thread類的方式

在這里插入圖片描述
注意給線程設置名字,啟動線程等操作
在這里插入圖片描述

實現(xiàn)Runable的方式

自己創(chuàng)建一個類然后去實現(xiàn)Runable接口,重寫run方法;

為什么會有這個方式?

因為Java只支持單繼承,如果已經(jīng)繼承一個類了,那么就不能繼承第二個類,所以有局限性。
在這里插入圖片描述
創(chuàng)建一個Thread對象的時候傳入創(chuàng)建的的重寫類,start()開啟線程
在這里插入圖片描述

問題

在使用自己實現(xiàn)的Runable接口的類的時候,不能直接使用Thread類中的方法,可以通過Thread.currentThread()獲得當前執(zhí)行run()函數(shù)的線程。
在這里插入圖片描述

利用Callable接口和Future接口方式

為什么要實現(xiàn)Callable接口?因為之前使用的多線程的函數(shù)中并沒有返回值。
1、定義的類實現(xiàn)Callable接口,并重寫call()方法,Callable中的泛型為返回值的類型
2、創(chuàng)建Future類,它是一個抽象類所以應該創(chuàng)建它的子類FutureTask類來管理結果;創(chuàng)建的時候傳入實現(xiàn)Callable接口的對象。
3、創(chuàng)建Thread類的時候傳入FutureTask的對象
4、執(zhí)行Thread類中的start()方法
4、最后通過FutureTask對象獲得結果
在這里插入圖片描述
在這里插入圖片描述

多線程中常用的成員方法

在這里插入圖片描述

線程優(yōu)先級

對于搶占式的線程,具有優(yōu)先級。Java中優(yōu)先級為1-10,創(chuàng)建一個線程默認為5;
優(yōu)先級越高,在CPU上執(zhí)行的概率越高。

守護線程

當其他非守護線程執(zhí)行完畢之后,守護線程會陸續(xù)結束;
換個說法就是,正常線程執(zhí)行完畢了,守護線程就沒有存在的必要了

定義一個非守護線程

在這里插入圖片描述

定義一個守護線程

在這里插入圖片描述

創(chuàng)建對象,并設置守護線程

在這里插入圖片描述
結果:非守護線程結束之后,守護線程也結束了(并不是馬上,存在一定的延遲)
在這里插入圖片描述

為什么會有守護線程

當把聊天窗關閉之后,傳輸文件的線程就沒有存在的必要了。
在這里插入圖片描述

禮讓線程

在這里插入圖片描述
Thread.yield()為線程搶到CPU執(zhí)行權之后,讓出使用權。重新?lián)尵€程。
僅僅會使兩個線程執(zhí)行的更加均勻,并不是絕對均勻,因為還要搶。

插入線程(了解)

有兩個線程A和B,B的線程中獲得A線程的對象,并且A線程的對象調(diào)用join()函數(shù),代表將A線程插入到當前B線程之前;所以A執(zhí)行完畢之后B才執(zhí)行。
在這里插入圖片描述
在這里插入圖片描述

線程的生命周期

在這里插入圖片描述

線程的安全問題

就是3個線程賣票,然后出現(xiàn)賣重復和多余的票的問題。沒啥好解釋的。

同步代碼塊

為了保證操作的唯一性,解決上面線程的安全問題所提出來的

synchronized(鎖對象){}
這里鎖對象可以理解為之前的flag標記,只不過注意是唯一的就行

在這里插入圖片描述

改進

字節(jié)碼對象可以使用當前類的字節(jié)碼文件對象
在這里插入圖片描述

同步方法

如果是想鎖住 一整個方法,那么使用同步方法;也就是將synchronized加到方法上,
1、同步方法是鎖住方法里面所有的代碼
2、鎖住的對象不能像上面同步代碼塊那樣能夠自己指定;對于非靜態(tài)的方法中,鎖住的對象為this;對于靜態(tài)的方法為當前類的字節(jié)碼文件對象
3、技巧:對于那些不知道什么東西應該放到同步方法中的問題,可以先寫同步代碼塊,然后將同步代碼塊放到同步方法中。
在這里插入圖片描述

使用實現(xiàn)Runable的接口的方式進行展示

注意的點

這里面有一個要注意的地方就是,之前使用類去繼承Thread類的時候,里面的ticket是static的;
但是如果是實現(xiàn)Runable接口,那么ticket就不用定義為static;
因為如果繼承Thread的話,我們創(chuàng)建幾個線程就創(chuàng)建幾個Thread,所以里面的ticket為static;
我們?nèi)绻麑崿F(xiàn)Runable的話,我們是創(chuàng)建幾個Thread的時候輸入實現(xiàn)Runable的對象,所以不用為static;
在這里插入圖片描述
在這里插入圖片描述
把他改成同步方法的形式
在這里插入圖片描述

lock鎖

在這里插入圖片描述
之前的就是很省事,這個lock就是很繁瑣,像是原本OS中精細化上鎖,解鎖。還要考慮其他進程等待其他進程解鎖的邏輯
下面這個函數(shù),會發(fā)生即使票賣出100個,但是程序還是不會停止;因為在100處直接break了,沒有進行解鎖的操作;導致其他線程一直等待鎖
在這里插入圖片描述
因此改成try catch finally的形式,在finally中執(zhí)行釋放鎖的操作:
在這里插入圖片描述

死鎖

死鎖是指兩個或兩個以上的進程在執(zhí)行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無外力作用,它們都將無法推進下去。

生產(chǎn)者消費者(等待喚醒機制)

就是那個一個桌子,一個生產(chǎn)者一個消費者的情形。
在這里插入圖片描述

生產(chǎn)者

package com.waitandnotify;public class Cook extends Thread{@Overridepublic void run() {synchronized (Desk.lock){while (true){if(Desk.count == 10){break;}if(Desk.flag == 0){Desk.flag = 1;Desk.lock.notifyAll();System.out.println("做了第"+Desk.count+"份");}else {try {Desk.lock.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}}}}}
}

消費者

package com.waitandnotify;public class Foodie extends Thread{@Overridepublic void run() {synchronized (Desk.lock){while(true){if(Desk.flag == 1){System.out.println("正在吃:"+Desk.count);Desk.count++;Desk.flag = 0;//喚醒進程Desk.lock.notifyAll();}else {try {Desk.lock.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}}if(Desk.count == 10){break;}}}}
}

測試類

package com.waitandnotify;public class Demo {public static void main(String[] args) {Cook cook = new Cook();Foodie foodie = new Foodie();cook.start();foodie.start();}
}

等待喚醒機制(阻塞隊列實現(xiàn))

在這里插入圖片描述

阻塞隊列的繼承結構

放的進程沒有空間的時候會阻塞,取的進程沒有空間的時候會阻塞;這就是通道啊。
在這里插入圖片描述
ArrayBlockingQueue底層是數(shù)組,所以在創(chuàng)建的時候要指定大小。

創(chuàng)建阻塞隊列

在這里插入圖片描述

實現(xiàn)生產(chǎn)者

注意阻塞隊列都是一個,所以定義一個成員變量;
注意,queue.put()個queue.take()中才是線程同步的代碼;run函數(shù)中其他部分不是同步的代碼;
所以輸出的地方會出現(xiàn)重復的東西。
在這里插入圖片描述

消費者

在這里插入圖片描述

線程的狀態(tài)

在這里插入圖片描述

線程池

為什么會有線程池?
例子:吃飯,A吃飯要買碗,吃完就把碗摔了;線程創(chuàng)建和消除也是這樣,很費資源。
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

自定義線程池

在這里插入圖片描述
在這里插入圖片描述

核心線程,一直存在;臨時線程為當?shù)却娜蝿照紳M了隊伍,并且有新的任務的時候創(chuàng)建臨時進程;其中定義了臨時的時間,如果超過定義的臨時時間沒有使用臨時進程,那么臨時進程就銷毀。如果提交的任務數(shù)量超過核心線程數(shù)量+臨時線程+隊伍長度;觸發(fā)任務拒絕策略。
在這里插入圖片描述

任務拒絕策略

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

多線程額外擴展

看阿偉的文件,不過找不到,直接看八股文吧。

http://aloenet.com.cn/news/47607.html

相關文章:

  • 中國建設教育網(wǎng)官方網(wǎng)站哈爾濱推廣優(yōu)化公司
  • 網(wǎng)站建設便宜的公司北京公司排名seo
  • 鄭州建設網(wǎng)站定制seo優(yōu)化網(wǎng)站推廣全域營銷獲客公司
  • 免費只做網(wǎng)站英文seo外鏈
  • 朔州做網(wǎng)站公司網(wǎng)絡營銷策劃怎么寫
  • 服裝 網(wǎng)站模板 wordpress哪里可以免費推廣廣告
  • 提高網(wǎng)站排名淘寶seo搜索優(yōu)化工具
  • 學vue可以做pc網(wǎng)站福州百度首頁優(yōu)化
  • 設計素材網(wǎng)站p谷歌廣告聯(lián)盟一個月能賺多少
  • 地方網(wǎng)站定位深圳sem競價托管
  • h5做招聘網(wǎng)站簡述網(wǎng)站推廣的方式
  • 大型服裝商城網(wǎng)站建設廣州seo優(yōu)化排名公司
  • 高端手機網(wǎng)站淘寶關鍵詞排名
  • 水利建設工程網(wǎng)站市場調(diào)研報告萬能模板
  • 邢臺哪里提供網(wǎng)站制作網(wǎng)頁制作的軟件有哪些
  • 福建省建建設行業(yè)信用評分網(wǎng)站優(yōu)化網(wǎng)站的步驟
  • 施工企業(yè)準則長沙官網(wǎng)seo技巧
  • 哪里做網(wǎng)站一套一百灰色行業(yè)怎么推廣引流
  • 建設工程合同備案是在網(wǎng)站上嗎國外搜索引擎網(wǎng)站
  • 美食網(wǎng)站制作模板網(wǎng)站流量排名查詢工具
  • 網(wǎng)站建設的關鍵詞網(wǎng)頁設計培訓教程
  • 傳動設備 技術支持 東莞網(wǎng)站建設數(shù)據(jù)分析網(wǎng)頁
  • 公眾號電影網(wǎng)站怎么做搜索引擎優(yōu)化技術都有哪些
  • 一般做網(wǎng)站要多少錢怎樣優(yōu)化網(wǎng)站排名靠前
  • 濟南網(wǎng)站建設公司有哪些廣州seo優(yōu)化費用
  • 裝修網(wǎng)平臺品牌seo培訓
  • 上海網(wǎng)站建設方案2021年年度關鍵詞
  • 陜西中洋建設有限公司網(wǎng)站自己怎么做關鍵詞優(yōu)化
  • 三站合一的網(wǎng)站怎么做教程找培訓機構的app
  • 手機社區(qū)網(wǎng)站模板求網(wǎng)址