单例和线程不能一起工作

时间:2014-10-12 21:21:24

标签: java

我有一个单例类,它也是Runnable(和Observable)。当我尝试从main启动线程时,它不会创建新线程并且卡在主循环中。

public class A extends Observable implements Runnable
{
    private static A instance = null;

    private A() {     
    }

    public static A getInstance() {
        if(instance == null) {
           instance = new A();
        }
        return instance;
     }


    @Override
    public void run()
    {

        while (true) {

            System.out.print("\nSleeping");
            // sleep        
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                System.out.print("\n[Error]");
            }                      
        }
    }

}

和主要课程:

Thread thread = new Thread(A.getInstance());
thread.run();
System.out.print("\nAfter...");

我看不到" After"记录,只是"睡眠"在一个循环中。为什么呢?

1 个答案:

答案 0 :(得分:1)

你正在调用run(),而不是start()。