JAVA執行緒總結( 二)

2021-09-01 05:14:16 字數 2080 閱讀 7602

繼續上篇的總結,這次我們講執行緒同步機制

執行緒同步是為了確保執行緒安全,所謂執行緒安全指的是多個執行緒對同一資源進行訪問時,有可能產生資料不一致問題,導致執行緒訪問的資源並不是安全的。如果多執行緒程式執行結果和單執行緒執行的結果是一樣的,且相關變數的值與預期值一樣,則是執行緒安全的。

舉個簡單的例子,後邊會寫到這個例子,鐵路售票,分四個視窗賣,一共一百張,需要同步。

1.同步**塊

package com.tao.syn;

public class demo1_synchronized

}}.start();

new thread()

}}.start(); }}

class demo

class printer

} public void print2()

}}

2.同步方法

package com.tao.syn;

public class demo2_synchronized

}}.start();

new thread()

}}.start(); }}

class demo2

class printer2

public static void print2()

}}

鐵路賣票的例子
package com.tao.syn;

/** *

* @author 天外飛星

* 鐵路賣票,四個視窗,一共100張

* */

public class demo3_ticket

} class ticket extends thread catch (interruptedexception e)

break;

}}

system.out.println("賣第"+ticket--+"張票");

} }}

單例設計模式

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的類乙個類只有乙個例項。即乙個類只有乙個物件例項。

具體實現

需要:(1)將構造方法私有化,使其不能在類的外部通過new關鍵字例項化該類物件。

(2)在該類內部產生乙個唯一的例項化物件,並且將其封裝為private static型別。

(3)定義乙個靜態方法返回這個唯一物件。

實現一:立即載入 / 「餓漢模式」

package com.tao.thread;

public class demo2_singleton1

}class singleton1 ;

/* * 一、餓漢式(常用)

*/// 2.建立本類物件

private static singleton1 s1 = new singleton1();

// 3.對外提供公共的訪問方法

public static singleton1 getinstance()

}

實現二:延遲載入 / 「懶漢模式」
package com.tao.thread;

public class demo3_singleton2

}class singleton2 ;

/* * 二、懶漢式

*/// 2.建立本類物件

private static singleton2 s1;

public static singleton2 getinstance()

return s1;

}}

實現三、final修飾方法
package com.tao.thread;

/** * 三、final修飾方法

* @author 天外飛星

* */

public class demo4_singleton3 }

class singleton4;

static final singleton4 s1=new singleton4();

}

Java執行緒總結(二)

實現 sychronized 工作原理 1 任意的物件都可以作為乙個鎖物件,每一物件都有乙個內建鎖 2 某一時刻,鎖物件最多只能被乙個執行緒持有 3 執行緒獲得了鎖之後會一直持有,知道執行完同步 塊後才能釋放。4 執行緒要執行同步 塊,必須先獲得鎖物件 執行緒不安全舉例 執行緒安全問題 以下的做法會...

Java執行緒總結

在實際應用中,我們經常用到多執行緒,如車站的售票系統,車站的各個售票口相當於各個執行緒。當我們做這個系統的時候可能會想到兩種方式來實現,繼承thread類或實現runnable介面,現在看一下這兩種方式實現的兩種結果。繼承thread方式class threadtest extends thread...

Java執行緒(二)

昨天我們認識了什麼是執行緒和實現他的兩種方式,今天我們再進一步了解。執行緒的狀態轉換是執行緒控制的基礎。執行緒狀態總的可分為五大狀態 分別是生 死 可執行 執行 等待 阻塞。如下圖 上圖能夠清晰的看出執行緒見得狀態是如何轉換的,並且標註了在不同的狀態執行緒對cpu的資源使用情況。其中對執行緒操作的方...