導航:首頁 > 編程語言 > java類多例

java類多例

發布時間:2023-03-23 02:07:18

1. java中,對象實例化的單例和多例的區別和適用環境

單例模式也是一種比較常見的設計模式其實無非是三個方面的作用:
1、控制資源的使用,通過線程同步來控制資源的並發訪問;
2、控制實例產生的數量,達到節約資源的目的。
3、作為通信媒介使用,也就是數據共享,它可以在不建立直接關聯的條件下,讓多個不相關的兩個線程或者進程之間實現通信。

單例模式有一下特點:
1、單例類只能有一個實例。
2、單例類必須自己創建自己的唯一實例。
3、單例類必須給所有其他對象提供這一實例。

2. java 中 單實例和多實例是指的什麼

簡單的說單例就是
只能有一個實例,所以地方用到的實例都是同一個。
就好像家人吃飯,桌子是單例的,大家用的是同一個。而碗是多例的,每人都有自幾的。
下面是具體的例子:
Java模式之單例模式:

單例模式確保一個類只有一個實例,自行提供這個實例並向整個系統提供這個實例。

特點:

1,一個類只能有一個實例

2,自己創建這個實例

3,整個系統都要使用這個實例

例:
在下面的對象圖中,有一個"單例對象",而"客戶甲"、"客戶乙"
和"客戶丙"是單例對象的三個客戶對象。可以看到,所有的客戶對象共享一個單例對象。而且從單例對象到自身的連接線可以看出,單例對象持有對自己的引用。

Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。在很多操作中,比如建立目錄
資料庫連接都需要這樣的單線程操作。一些資源治理器經常設計成單例模式。

外部資源:譬如每台計算機可以有若干個列印機,但只能有一個Printer
Spooler,以避免兩個列印作業同時輸出到列印機中。每台計算機可以有若干個通信埠,系統應當集中治理這些通信埠,以避免一個通信埠被兩個請求同時調用。內部資源,譬如,大多數的軟體都有一個(甚至多個)屬性文件存放系統配置。這樣的系統應當由一個對象來治理這些屬性文件。一個例子:Windows
回收站。
在整個視窗系統中,回收站只能有一個實例,整個系統都使用這個惟一的實例,而且回收站自行提供自己的實例。因此,回收站是單例模式的應用。
兩種形式:
1,餓漢式單例類
public
class
Singleton
{
private
Singleton(){}
//在自己內部定義自己一個實例,是不是很希奇?

//注重這是private
只供內部調用
private
static
Singleton
instance
=
new
Singleton();
//這里提供了一個供外部訪問本class的靜態方法,可以直接訪問

public
static
Singleton
getInstance()
{

return
instance;

}
}
2,懶漢式單例類
public
class
Singleton
{
private
static
Singleton
instance
=
null;
public
static
synchronized
Singleton
getInstance()
{
//這個方法比上面有所改進,不用每次都進行生成對象,只是第一次

//使用時生成實例,提高了效率!

if
(instance==null)

instance=new
Singleton();

return
instance;
}
}
第二中形式是lazy
initialization,也就是說第一次調用時初始Singleton,以後就不用再生成了。
注重到lazy
initialization形式中的synchronized,這個synchronized很重要,假如沒有synchronized,那麼使用getInstance()是有可能得到多個Singleton實例。
一般來說第一種比較安全。進入討論組討論。

3. java如何創建一個類的多個實例

1、定培尺義一個類

publicclassA{//定義一個類
}

2、根據類new多個實例

A畝枯a1=new配耐高A();//第一個實例
Aa2=newA();//第二個實例

4. java項目一般什麼時候用多例,什麼時候用單例ssh的action都是用單例嗎就是scope="prototype"

Struts2不是單例的,每次請求都是一個新的action對象,至於保存上一次的數據應該是項目中自己實現的,比如定義一個攔截器,每次將提交的數據保存在session中。

5. java項目一般什麼時候用多例,什麼時候用單例ssh的action都是用單例嗎就是scope="prototype"

當你在整個運行環境中某一個類只需要一個察李實例的時候,就使用單例。
scope="prototype" 這個不是單好雀列,它叫原型. 也就是你說的多例敗襪遲吧。

6. java中我要創建多了類對象應該如何實現

請參考 多例模式
主要思想是在一個多例類中用一個靜態的集合對象(通常可使用哈西表HashMap)存儲所頌搜創建的多個Car對象,然後在態櫻野此類中用一個靜態工廠方法來負責創建Car類的實例,每創建一個就加到那個靜態的集合對象中,每需要刪除一個Car對象就通過Car對象的名字到集合中去索引到此對象,然後從集合中刪除。
下面是一個多例類的示例帆喊
public class Car {
// 靜態集合
private static HashMap cars = new HashMap();
// 靜態工廠方法
public static Car createCar(String name, float speed, int price) {
Car car = new Car(name, speed, price);
cars.put(name, car);
}

public static Car deleteCar(String name) {
return cars.remove(name);
}

public static Car findCar(String name) {
return cars.get(name);
}

private String name;
private int price;
private float speed;
// 保護的Car類構造函數,不能被直接創建
protected Car(String name, float speed, int price) {
this.name = name;
this.speed = speed;
this.price = price'
........
........
}

........
........
}

7. java中,多態是多例還是單例

你用杯子喝可樂,喝完了不刷,繼續去倒果汁喝,就是單例。
你用杯子喝可樂,直接扔了杯子,換個杯子去倒果汁喝,就是多例。

資料庫連接池就是單例模式,有且僅有一個連接池管理者,管理多個連接池對象。

1. 什麼是單例多例:

所謂單例就是所有的請求都用一個對象來處理,比如我們常用的service和層的對象通常都是單例的,而多例則指每個請求用一個新的對象來處理,比如action;

2. 如何產生單例多例:

在通用的SSH中,單例在spring中是默認的,如果要產生多例,則在配置文件的bean中添加scope="prototype";

3. 為什麼用單例多例:

之所以用單例,是因為沒必要每個請求都新建一個對象,這樣子既浪費CPU又浪費內存;

之所以用多例,是為了防止並發問題;即一個請求改變了對象的狀態,此時對象又處理另一個請求,而之前請求對對象狀態的改變導致了對象對另一個請求做了錯誤的處理;

用單例和多例的標准只有一個:

當對象含有可改變的狀態時(更精確的說就是在實際應用中該狀態會改變),則多例,否則單例;

單例其實就在內存中該對象只有一個內存對應地址。無論你多少個線程訪問那個對象,都是同一個地址。這樣節省內存

4. 何時用單例?何時用多例?

對於struts2來說,action必須用多例,因為action本身含有請求參數的值,即可改變的狀態;

而對於struts1來說,action則可用單例,因為請求參數的值是放在actionForm中,而非action中的;

另外要說一下,並不是說service或一定是單例,標准同第3點所講的,就曾見過有的service中也包含了可改變的狀態,同時執行方法也依賴該狀態,但一樣用的單例,這樣就會出現隱藏的BUG,而並發的BUG通常很難重現和查找;

8. 怎麼判斷java對象是單例還是多列的

獲取兩個該對象, 然後用看 對象1==對象2 的結果是false還是true,
如果是單例模式創建的 ,如果是單例,結果應該是true,否則是多例;
單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的方式。
這種模式涉及到一個單一的類,該類負責創建自己的對象,同時確保只有單個對象被創建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。

9. 單例,多例.各有什麼優缺點

單例顧名思義就是是整個程序運行過程中只存在一個實例對象。常見的單例有靜態類,enum,java設計模式中也有單例這一模式。

多例 整個程序運行過程中只存在多個實例對象。每次使用的時候基本都是new出來的。

spring依賴注入默認使用的是單例。

如果類中存在有狀態的變數,那麼一般建議使用多例。因為單例的話 再並發的場景下數據會相互干擾。而多例的話數據是隔離的。

如果類的實現都是無狀態的,那麼建議使用單例,一個實例減少類對象的開辟和gc,性能上可能會好點。

更多單例和多例的介紹參考:單例和多例的區別

10. javaWeb項目中到底什麼是單例,多例

單例就是不管這個程序怎麼運行,多少人訪問,他使用的都是同一個對象,多例呢,就剛好相反,有多少次訪問,就會新創建多少個對象

閱讀全文

與java類多例相關的資料

熱點內容
編程和電腦哪個更適合孩子 瀏覽:718
xls壓縮文件怎麼設置 瀏覽:423
微信眨眼小女孩 瀏覽:207
cad2010安裝文件 瀏覽:379
編程上什麼學 瀏覽:364
美版s7升級70移動4g 瀏覽:112
金融數據包含哪些 瀏覽:240
尼爾應用程序錯誤 瀏覽:157
淘特app如何助力 瀏覽:472
cad文件有木馬 瀏覽:459
多頁文件怎樣改變字體 瀏覽:145
16燈搖搖棒的程序 瀏覽:705
作業成本相關數據哪裡找 瀏覽:826
買鞋有什麼推薦的app 瀏覽:239
什麼app可以申請小號 瀏覽:602
機明編程上門培訓怎麼收費 瀏覽:879
雙面鏤空雕刻玉有哪些網站 瀏覽:782
java反射機制幫助 瀏覽:670
java第一份工作影響 瀏覽:595
指示的文件系統找不到資料庫目錄 瀏覽:504

友情鏈接