2012-03-25 102 views
0

我想知道一個單例模式的示例,例如5個線程試圖訪問單個文本文件。一次只有一個應該能夠讀取該文件,然後創建一個文件顯示日期,線程名稱,內容。Singleton設計模式示例請

Textfile- source 

A B C D 





Text file - details of the threads and contents 

    Date & Time Thread name Contents 
    mar 25 10.02   a  A B C D 
    mar 25 10.05   b  A B C D 

感謝

+0

你甚至嘗試谷歌的Java單例「?那裏有很多例子。你有什麼嘗試嗎?對我來說,你的問題只是一個需求規格。 – home 2012-03-25 07:19:11

+0

這是功課嗎?如果是這樣,請添加作業標籤。 – 2012-03-25 07:27:56

+0

在這種情況下,您將只有一個閱讀器線程,並讓其他線程監聽所讀取的內容。在多個線程中讀取文件通常會增加很多複雜性,但不會加快訪問速度。 – 2012-03-25 07:48:18

回答

1

我@Peter Mensik不同意。

確實,在多線程環境中,雙重檢查鎖定解決方案被破壞。 http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html

的解決方案(和最佳實踐)是使用初始化點播模式:

例如在本頁面的底部。使用JDK 1.4及以上時

http://best-practice-software-engineering.ifs.tuwien.ac.at/patterns/singleton.html

該解決方案是非常有用的。

在JDK 1.5中,您也可以使用enum。

爲了更好的理解,你可以看到這篇優秀的文章:

http://www.ibm.com/developerworks/java/library/j-dcl/index.html

+0

感謝您糾正我,現在我再一點點智慧:-) – 2012-03-25 19:48:37