我有一個程序使用單例模式。我需要使用線程,記住使用線程機械化之前和之後的輸出應該是相同的。我的意思是避免線程忽略單例並創建更多一個對象的「斷線模式」。但是,我失敗了。我試圖使用「同步」,但沒有改變。同樣的錯誤結果。java編程和java單線程多線程問題(單線程與多線程)
我主要用了Runnable
public class Main implements Runnable {
Main(){}
public void run()
{
Counter[] counters = new Counter[5];
for(int i = 0; i < counters.length; i++)
{
counters[i] = Counter.getCounter();
}
for(int i = 0; i < counters.length; i++)
{
counters[i].increment();
System.out.println("counter[" + i + "] = " + counters[i]);
}
for(int i = 0; i < 5; i++) {
counters[i].decrement();
System.out.println("counter[" + i + "] = " + counters[i]);
}}
public static void main(String[] args)
{
Main m1=new Main();
Main m2=new Main();
Main m3=new Main();
new Thread(m1).start();
new Thread(m2).start();
new Thread(m3).start();
}
}
它適用Singleton模式
public class Counter {
private static Counter myInstance = null;
public static Counter getCounter()
{
if(myInstance == null)
{
synchronized (Counter.class) {
if(myInstance == null)
{
myInstance = new Counter();
}
}
}
return(myInstance);
}
private int myCounter;
private Counter() {
myCounter = 0;
}
public void increment() {
myCounter++;
}
public void decrement() {
myCounter--;
}
public String toString() {
return(Integer.toString(myCounter));
}
}
'java.util'應該有一個懶惰的評價'Lazy'類;這經常是需要的,而人們不知道如何正確地做。 「內部類單身人士」和「枚舉單身人士」是黑客,只爲全球狀態工作。 Spring只是讓你在xml中編寫相同的東西。出於某種原因,人們認爲xml不是代碼。對他們的老闆很好。 – irreputable 2011-03-20 03:24:00