我有一个名为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();
}
}
}
}
答案 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
对象的创建。 (如果一次打开数十个命令提示符窗口)。