我有一个程序使用单例模式。我需要使用线程,记住使用线程机械化之前和之后的输出应该是相同的。我的意思是避免线程忽略单例并创建更多一个对象的“断线模式”。但是,我失败了。我试图使用“同步”,但没有改变。同样的错误结果。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