每个tomcat创建一个单个实例

时间:2017-05-03 03:56:26

标签: java multithreading tomcat java-threads

我有一个名为Test的类,它的打印数量从1到100,延迟10秒。如果我从命令提示符打开它并尝试运行它将开始打印数据。如果我打开第二个命令提示符并运行此程序它将工作。但我想限制它应该只从单个命令提示符运行。我们怎么能这样做。

这是我的代码

public class ThreadDelay{
    public static void main(String[] args) throws InterruptedException {
        Test t1= new Test();
        t1.start();


    }

}
class Test extends Thread{
    public void run(){
        for(int i=0;i<100;i++){
            System.out.println("Value of i ===:"+i);
            Thread t=new Thread();
            try {
                t.sleep(10000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        }
}

2 个答案:

答案 0 :(得分:0)

使用单例模式。最简单的实现包括一个私有构造函数和一个保存其结果的字段,以及一个名为getInstance()的静态访问器方法。

私有字段可以在静态初始化程序块中分配,或者更简单地使用初始化程序分配。 getInstance()方法(必须是公共的)然后只返回此实例

public class Singleton {
    private static Singleton instance;

    /**
     * A private Constructor prevents any other class from
     * instantiating.
     */
    private Singleton() {
        // nothing to do this time
    }

    /**
     * The Static initializer constructs the instance at class
     * loading time; this is to simulate a more involved
     * construction process (it it were really simple, you'd just
     * use an initializer)
     */
    static {
        instance = new Singleton();
    }

    /** Static 'instance' method */
    public static Singleton getInstance() {
        return instance;
    }

    // other methods protected by singleton-ness would be here...
    /** A simple demo method */
    public String demoMethod() {
        return "demo";
    }
}

答案 1 :(得分:0)

您基本上只想创建single instance thread个。{ 如果您将线程声明为实例变量并且是静态的,那么它将适合您。

public class ThreadDelay {
    static Thread t;
    ...

在运行块中只写t=new Thread();

更新:您可能希望在Tomcat应用程序服务器上运行您的类 您还需要使用Singleton class来处理多个Thread class对象的创建。 (如果一次打开数十个命令提示符窗口)。