中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

巴中網(wǎng)站制作公司公司怎么做網(wǎng)站推廣

巴中網(wǎng)站制作公司,公司怎么做網(wǎng)站推廣,自己做一款app需要多少錢,oss如何做網(wǎng)站一、死鎖 1.概述 死鎖 : 死鎖是指兩個或兩個以上的進(jìn)程在執(zhí)行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無外力作用,它們都將無法往下執(zhí)行。此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)…

一、死鎖

1.概述

  • 死鎖 : 死鎖是指兩個或兩個以上的進(jìn)程在執(zhí)行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象,若無外力作用,它們都將無法往下執(zhí)行。
  • 此時稱系統(tǒng)處于死鎖狀態(tài)或系統(tǒng)產(chǎn)生了死鎖,這些永遠(yuǎn)在互相等待的進(jìn)程稱為死鎖進(jìn)程
  • 原理 :
    1. 某個線程執(zhí)行完成,需要先后嵌套鎖定兩個對象,在這個過程中,先鎖定了第一個對象
    2. 另一個線程執(zhí)行完成也需要先后嵌套鎖定兩個對象,在這個過程中,先鎖定了第二個對象
    3. 第一個線程執(zhí)行中,要執(zhí)行到第二個對象的時候,發(fā)現(xiàn)第二個對象被鎖定,進(jìn)入等待狀態(tài),等待交出鎖
    4. 第二個線程執(zhí)行中,要執(zhí)行到第一個對象的時候,發(fā)現(xiàn)第一個對象也被鎖定,也進(jìn)入等待狀態(tài)
    5. 此時兩個線程都在等待對方交出鎖,導(dǎo)致死鎖

2.代碼實現(xiàn)

public class Thread_01_DeadLock {public static void main(String[] args) {Object o1=new Object();Object o2=new Object();Thread t1=new Thread(new T1(o1, o2));Thread t2=new Thread(new T2(o1, o2));t1.start();t2.start();}
}
class T1 implements Runnable{Object o1;Object o2;public T1(Object o1,Object o2){this.o1=o1;this.o2=o2;}@Overridepublic void run() {synchronized (o1) {
//			try {//加上睡眠一定死鎖
//				Thread.sleep(1000);
//			} catch (InterruptedException e) {
//				e.printStackTrace();
//			}System.out.println(Thread.currentThread().getName()+"-->T1o1已鎖定");synchronized (o2) {System.out.println(Thread.currentThread().getName()+"-->T1o2已鎖定");}}System.out.println("t1執(zhí)行完成");}
}
class T2 implements Runnable{Object o1;Object o2;public T2(Object o1,Object o2){this.o1=o1;this.o2=o2;}@Overridepublic void run() {try {//加上睡眠一定不死鎖Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (o2) {System.out.println(Thread.currentThread().getName()+"-->T2o2已鎖定");synchronized (o1) {System.out.println(Thread.currentThread().getName()+"-->T2o1已鎖定");}}System.out.println("t2執(zhí)行完成");}
}

二、線程通信

1.概述

  • Object中的方法
  • wait : 讓當(dāng)前線程進(jìn)入等待狀態(tài)(掛起),并釋放鎖,當(dāng)被喚醒之后,接著掛起的位置繼續(xù)執(zhí)行,假如之前執(zhí)行了1、2,到3掛起,那么被喚醒后接著執(zhí)行3
  • notify : 喚醒一個在該對象中掛起的任意一個線程
  • notifyAll : 喚醒在該對象中掛起的所有線程
  • 這幾個方法必須出現(xiàn)在加鎖的成員方法
  • wait : 如果是無參,則不會自動醒,也可以傳入long類型的值,代表毫秒數(shù),多久之后自動醒
  • wait 和 sleep的區(qū)別 :
    • sleep : 讓當(dāng)前線程進(jìn)入睡眠狀態(tài), 是靜態(tài)方法,和是否加鎖沒有關(guān)系,如果在加鎖的方法中,也不會釋放鎖
    • wait : 讓當(dāng)前線程進(jìn)入掛起等待狀態(tài),必須在加鎖的成員方法中,另外會釋放鎖

2.使用方式

public class Thread_03_Wait {public static void main(String[] args) throws InterruptedException {Num num=new Num();Thread t1=new PrintNum(num);Thread t2=new PrintNum(num);t1.start();Thread.sleep(10);//保證t1先執(zhí)行t2.start();}
}
class PrintNum extends Thread{Num num;public PrintNum(Num num){this.num=num;}@Overridepublic void run() {while (true) {num.printNums();}}
}
class Num{private int count =1;public synchronized void printNums(){System.out.println(Thread.currentThread().getName()+"-->"+count);count++;// 喚醒等待的進(jìn)程this.notifyAll();try {Thread.sleep(1000);// 進(jìn)入掛起狀態(tài),并釋放鎖this.wait();} catch (InterruptedException e) {e.printStackTrace();}}
}

3.生產(chǎn)者消費者

在這里插入圖片描述

3.1.示例

public class Thread_04_Producer {public static void main(String[] args) {SynStack ss=new SynStack();Thread producer1=new Thread(new Producer(ss));Thread producer2=new Thread(new Producer(ss));Thread consumer1=new Thread(new Consumer(ss));Thread consumer2=new Thread(new Consumer(ss));producer1.start();producer2.start();consumer1.start();consumer2.start();}
}
class Producer implements Runnable{private SynStack ss;public Producer(SynStack ss){this.ss=ss;}@Overridepublic void run() {for (int i = 0; i < 26; i++) {ss.push((char)('a'+i));}}
}
class Consumer implements Runnable{private SynStack ss;public Consumer(SynStack ss){this.ss=ss;}@Overridepublic void run() {for (int i = 0; i < 26; i++) {ss.pop();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}
}
//業(yè)務(wù)類
class SynStack{int count=0;// 貨物數(shù)量char[] data=new char[6];// 記錄貨物數(shù)量// 生產(chǎn)貨物public synchronized void push(char ch){// 判斷貨物滿沒滿while(count ==data.length){//try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}//倉庫空了該生產(chǎn)了,此時應(yīng)該喚醒掛起的消費者if (count==0) {this.notifyAll();}data[count++]=ch;System.out.println(Thread.currentThread().getName()+"生產(chǎn)了 "+ch+" 還剩 "+count+" 個貨物");}// 消費貨物public synchronized char pop(){// 判斷貨物空沒空while(count ==0){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}//倉庫滿了該掛起了,此時應(yīng)該喚醒掛起的生產(chǎn)者if (count==data.length) {this.notifyAll();}char ch=data[--count];System.out.println(Thread.currentThread().getName()+"消費了 "+ch+" 還剩 "+count+" 個貨物");return ch;}
}

三、單例模式

public class SingLeton {private SingLeton(){}// volatile 防止指令重排private volatile static SingLeton singLeton;public static SingLeton getInstance(){// 多線程可能同時進(jìn)入if (singLeton==null) {// 一個線程進(jìn)入synchronized (SingLeton.class) {if (singLeton==null) {// 一個線程進(jìn)入后 對象就不再是null,其他的線程將無法進(jìn)入singLeton=new SingLeton();}	}}return singLeton;}
}

四、線程池

  • 線程池的作用:
    • 線程池作用就是限制系統(tǒng)中執(zhí)行線程的數(shù)量。
  • 根據(jù)系統(tǒng)的環(huán)境情況,可以自動或手動設(shè)置線程數(shù)量,達(dá)到運行的最佳效果;
  • 少了浪費了系統(tǒng)資源,多了造成系統(tǒng)擁擠效率不高。
  • 用線程池控制線程數(shù)量,其他線程排隊等候。
  • 一個任務(wù)執(zhí)行完畢,再從隊列的中取最前面的任務(wù)開始執(zhí)行。
  • 若隊列中沒有等待進(jìn)程,線程池的這一資源處于等待。
  • 當(dāng)一個新任務(wù)需要運行時,如果線程池中有等待的工作線程,就可以開始運行了,否則進(jìn)入等待隊列。
  • 為什么要用線程池:
    1. 減少了創(chuàng)建和銷毀線程的次數(shù),每個工作線程都可以被重復(fù)利用,可執(zhí)行多個任務(wù)。
    2. 可以根據(jù)系統(tǒng)的承受能力,調(diào)整線程池中工作線線程的數(shù)目,防止因為消耗過多的內(nèi)存,而把服務(wù)器累趴下(每個線程需要大約1MB內(nèi)存,線程開的越多,消耗的內(nèi)存也就越大,最后死機)
http://www.risenshineclean.com/news/53737.html

相關(guān)文章:

  • 輕博客網(wǎng)站開發(fā)去了外包簡歷就毀了嗎
  • 傳世手游新開服網(wǎng)站網(wǎng)站首頁不收錄
  • 做網(wǎng)站用什么后綴好網(wǎng)站模板
  • 淘寶網(wǎng)站建設(shè) 推廣 上海濟(jì)寧百度推廣開戶
  • thinkphp做雙語網(wǎng)站百度知道app官方下載
  • 成都優(yōu)化網(wǎng)站哪家公司好seo優(yōu)化網(wǎng)站的手段
  • 把自己做的網(wǎng)站進(jìn)行app封包騰訊云域名注冊官網(wǎng)
  • 對小米網(wǎng)站的建設(shè)意見青島新聞最新今日頭條
  • 想注冊一個做網(wǎng)站的公司企業(yè)營銷
  • 開家做網(wǎng)站公司有哪些合肥關(guān)鍵詞排名提升
  • 修改公司網(wǎng)站東莞推廣公司
  • 深圳哪個公司做網(wǎng)站好網(wǎng)站關(guān)鍵詞seo費用
  • 網(wǎng)站制作零基礎(chǔ)學(xué)習(xí)3步打造seo推廣方案
  • 銅仁市城鄉(xiāng)住房與建設(shè)局網(wǎng)站什么是seo?
  • 織夢五彩婚紗源碼網(wǎng)_婚慶策劃網(wǎng)站php源碼今日油價92汽油價格
  • 網(wǎng)站開發(fā)情況百度公司排名多少
  • wordpress如何壓縮圖片優(yōu)化推廣服務(wù)
  • 做網(wǎng)站的要求貴陽百度seo點擊軟件
  • 做網(wǎng)站公司哪個品牌好免費推廣的方式有哪些
  • 教做世界美食的網(wǎng)站西安百度快速排名提升
  • 營銷型網(wǎng)站的名詞解釋寶雞seo排名
  • 微信開發(fā)者工具下載官網(wǎng)下載seo軟文代寫
  • u網(wǎng)站建設(shè)蘭州網(wǎng)絡(luò)seo
  • 大學(xué)網(wǎng)站html模板百度競價托管一月多少錢
  • 湘潭seo 推廣快湘潭磐石網(wǎng)絡(luò)圖片優(yōu)化軟件
  • 有沒有做任務(wù)一樣的網(wǎng)站兼職自媒體推廣渠道
  • 網(wǎng)頁安全站點設(shè)置游戲優(yōu)化軟件
  • 企業(yè)網(wǎng)站模板優(yōu)化中國十大品牌營銷策劃公司
  • 吉安網(wǎng)站建設(shè)優(yōu)化服務(wù)公司網(wǎng)站設(shè)計
  • 網(wǎng)站建設(shè)維護(hù)合同上海優(yōu)化外包公司排名