1. 程式人生 > >java基礎24_多執行緒

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:執行緒的宣告週期(

新建狀態:建立執行緒物件

就緒狀態:具備執行資格、不具備執行權

執行狀態:具備執行資格、具備執行權

----阻塞狀態:不具備執行資格、不具備執行權

死亡狀態:變成垃圾


) E:同步解決執行緒安全問題的方式有幾種(1.同步程式碼塊、2.同步方法)、F:同步程式碼塊的鎖物件是誰(可以是任意物件)同步方法的鎖物件是誰(this物件)靜態方法的鎖物件是(當前類的位元組碼檔案物件)

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 {