java基礎24_多執行緒
1.多執行緒:
(1)如果一個應用程式有多條執行路徑,則被稱為多執行緒程式。概念區分:程序(正在執行的程式)、執行緒(程式的執行路徑,執行單元)、單執行緒(應用程式只有一條執行路徑)、多執行緒(應用程式有多條執行路徑)。
(2)多執行緒程式實現的兩種方案:
-------------A:繼承執行緒Thread類:a:自定義類繼承Thread類、b:重寫run方法、c:建立測試類,在測試類中建立自定義類的多個物件、d:呼叫start()方法
-------------B:實現Runnable介面:a:自定義類實現Runnable介面、b:重寫run方法、c:建立測試類,並在main方法中建立自定義的一個物件、d:在測試類中建立Thread類的多個物件,並把建立好的自定義類物件作為構造引數傳遞,e:呼叫start()方法。
(3)概念區分:A:如何啟動一個執行緒(呼叫start()方法就等於啟動了執行緒)、B:start()和run()的區別(呼叫run方法僅僅是普通方法的呼叫,start方法是先啟動執行緒,然後自動呼叫run方法)、C:執行緒隨機性原理(cpu的高效切換)、D:執行緒的安全問題是怎麼產生的(程式是多執行緒,又有共享的資料,並且還有多條語句對共享資料進行操作。),以及是如何解決的(a:同步程式碼塊加鎖,b:同步方法)、E:執行緒的宣告週期(
新建狀態:建立執行緒物件
就緒狀態:具備執行資格、不具備執行權
執行狀態:具備執行資格、具備執行權
----阻塞狀態:不具備執行資格、不具備執行權
死亡狀態:變成垃圾
2.單例設計模式:
(1)保證類在記憶體中只有一個物件。
(2)怎麼保證:構造私有、自己造一個物件、提供公共訪問方式
(3)兩種方式:
A:懶漢式
懶載入模式、和執行緒安全問題需要注意(開發一般用餓漢式)public class Singleton{ public static void main(String[] args) { private Singleton(){} private static Singleton instance=null; public synchronized static Singleton getSingleton(){ if(instance==null){ instance=new Singleton(); } return instance; } } }
B:餓漢式
public class Student {
private Student(){}
private static Student s = new Student();
public static Student getStudent() {
return s;
}
}
舉例:JDK的Runtime類本身也是單例模式。
設計模式:
就是前人經驗的總結和積累,就是一個個的模版。
23種設計模式:
分類:
建立型模式:造物件。
結構型模式:物件間的關係。
行為型模式:功能。
相關推薦
java基礎24_多執行緒
1.多執行緒: (1)如果一個應用程式有多條執行路徑,則被稱為多執行緒程式。概念區分:程序(正在執行的程式)、執行緒(程式的執行路徑,執行單元)、單執行緒(應用程式只有一條執行路徑)、多執行緒(應用程式有多條執行路徑)。 (2)多執行緒程式實現的兩種方案: --------
Java基礎之多執行緒及併發庫
實際上關於多執行緒的基礎知識,前面自己已經總結過一部分,但是每一個階段對於同樣知識點的學習側重點是不一樣的,前面的Java基礎總結八之多執行緒(一)和 Java基礎總結九之多執行緒(二)是對JDK5以前多執行緒相關基礎知識的一個簡單總結,今天本文將偏重於JDK5提供的併發庫進行學習總結。 首先,
黑馬程式設計師----Java基礎之多執行緒
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a&g
Java基礎之多執行緒-多生產多消費
使用場景請看上一篇部落格Java基礎之多執行緒-多生產多消費 話不多說,直接上程式碼: 顧客: package cn.itcast.day07.demo02; public class MultiConsumer implements Runnable { priva
Java基礎之多執行緒案例-單生產單消費
在講單生產單消費之前,我們先來說一下執行緒間通訊的問題 一、 執行緒間通訊 概念:多個執行緒在處理同一個資源,但是處理的動作(執行緒的任務)卻不相同。 比如:執行緒A用來生成包子的,執行緒B用來吃包子的,包子可以理解為同一資源,執行緒A與執行緒B處理的動作,一個是生產,一個是消費,
Java基礎之多執行緒之原理、實現方式及匿名內部類建立執行緒方法
一、概念 程序:作業系統當中正在執行的一個程式。例如正在執行一個QQ。 執行緒:程序之內多工的執行單位。例如迅雷當中正在下載的多個電影。 JVM當中:棧(Stack)記憶體是執行緒獨立的,堆(Heap)記憶體是執行緒共享的。 (1)Java程式執行的時候至少有兩個執行緒: 1)主
Java基礎學習——多執行緒之執行緒池
1.執行緒池介紹 執行緒池是一種執行緒使用模式。執行緒由於具有空閒(eg:等待返回值)和繁忙這種不同狀態,當數量過多時其建立、銷燬、排程等都會帶來開銷。執行緒池維護了多個執行緒,當分配可併發執行的任務時,它負責排程執行緒執行工作,執行完畢後執行緒不關閉而是返回執行緒池,
sincerit java基礎之多執行緒
執行緒狀態 Java執行緒具有五中基本狀態 新建狀態(New):當執行緒物件對建立後,即進入了新建狀態,如:Thread t = new MyThread(); 就緒狀態(Runnable):當呼叫執行緒物件的start()方法(t.start();),執行緒即進入就緒狀態。處於就
Java基礎之多執行緒
以下是我們Java基礎多執行緒的一些知識點總結: 執行緒中run()和start()的區別: 對於Thread物件來說,當你呼叫的是start(),執行緒會被放到等待佇列,等待CPU排程,不一定馬上執行;無需等待run()方法執行完畢,可以直接執行下面的程式碼; 而呼叫的是run()的話,就是當做普通的方
Java基礎14--多執行緒
14-1,多執行緒-執行緒間通訊示例 1,什麼是多執行緒間通訊? 多執行緒通訊:多個執行緒在處理同一個資源,但是任務不同。 比如說:有一堆煤(資源),一輛卡車向裡放煤(Input),一輛卡車向外取煤(output),放煤和取煤的任務不同,但操作的是同一個資源。 由於有兩個任務,所
JAVA基礎24-多執行緒(四)【讀寫鎖,阻塞佇列,執行緒池】
一、讀寫鎖 使用步驟 二、阻塞佇列 (BlockingQueue) 提供執行緒安全的佇列訪問方式; 當阻塞佇列進行插入資料時,若佇列滿,則執行緒阻塞,直到佇列非滿的時候 當阻塞佇列取資料時,若佇列為空,則執行緒阻塞直到佇列非空時候。
JAVA基礎23-多執行緒(三)【synchronized,ReentranLock,volatile、死鎖】
一、同步 大多數多執行緒應用中,兩個或兩個以上的執行緒需要共享對同一資料的存取,此時出現多個程式交替處理該資料,從而導致資料出現訛誤。 9-1.Synchronized關鍵字 &nb
JAVA基礎23-多執行緒(二)【執行緒區域性變數和未捕獲異常處理器】
一、執行緒區域性變數 線上程中使用共享變數肯定是存在風險。為了規避這個風險,利用同步機制,volatile這些方法都可以。但是也可為每個執行緒分配一個變數。使用ThreadLocal輔助類為各個執行緒提供各自的例項。 ThreadLocal為每個使用
JAVA基礎22-多執行緒(一)【多執行緒的概念,執行緒狀態及其轉換】
多執行緒 一.概念 1. 程序:程序是表示資源分配的的基本概念,又是排程執行的基本單位,是系統中的併發執行的單位。 2. 執行緒:單個程序中執行中
【java基礎】多執行緒匿名內部類和lambda建立方式,及多執行緒中的兩個面試題
一、可以用匿名類和lambda兩個種方式建立多執行緒。 1.利用匿名內部類建立多執行緒並開啟。 new Thread() {//建立方式1 public void run() { for(int x=0; x<50; x++) { System.out
java基礎--24.多執行緒的應用--電影院賣票程式的實現
A.多執行緒應用–電影院賣票程式的實現 A:繼承Thread類 B:實現Runnable介面 電影院賣票程式出問題 為了更符合真實的場景,加入了休眠100毫秒。 多執行緒賣票過程中可能出現的問題: a:同一張票多次出售
Java基礎:多執行緒之執行緒池
1.執行緒池的概念與Executors類的應用 應用需求:如果訪問伺服器的客戶端很多,那麼伺服器要不斷的建立和銷燬執行緒,這將嚴重的影響伺服器的效能 解決方法:首先建立一些執行緒,它
java基礎之——多執行緒
程式碼體現: public class MyThread extends Thread { public void run() { for(int x=0; x<100; x++) { System.out.println(getName()+"--
java基礎之多執行緒的練習題
題目如下: 某公司組織年會,會議入場時有兩個入口,在入場時每位員工都能獲取一張雙色球彩票,假設公司有100個員工,利用多執行緒模擬年會入場過程,並分別統計每個入口入場的人數,以及每個員工拿到的彩票的號碼。執行緒執行後列印格式如下:編號為: 2 的員工 從後門 入場! 拿到的
Java基礎之多執行緒二
/* 這是flag=1這個執行緒 */ if (flag == 1) { synchronized (o1) { /* 使用synchronized關鍵字把物件01鎖定了 */ try {