2017-05-03 1 views
0

J'ai une classe nommée Test qui imprime un nombre de 1 à 100 dans un délai de 10 secondes. Si je l'ouvre depuis l'invite de commande et que j'essaie de l'exécuter, les données seront imprimées. Si j'ouvre l'invite de commande deuxième et lancez ce programme cela fonctionnera. Mais je veux restreindre le fait qu'il devrait fonctionner à partir d'une seule invite de commande. Comment peut-on faire ça.Créer une seule instance par tomcat

C'est mon code

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

Votre titre et le texte sont en conflit. Lequel est-il, Tomcat ou ligne de commande? –

+0

Donc, comme une seule instance de ce programme peut fonctionner sur chaque périphérique? Je voudrais juste le faire d'une manière boiteuse et ouvrir un «Socket» local et s'il y en a un déjà ouvert, alors vous savez que le programme fonctionne ailleurs. – 3kings

Répondre

0

Utilisez le singleton. L'implémentation la plus simple consiste en un constructeur privé et un champ pour contenir son résultat, et une méthode d'accesseur statique avec un nom comme getInstance().

Le champ privé peut être affecté à partir d'un bloc d'initialisation statique ou, plus simplement, à l'aide d'un initialiseur. La méthode getInstance() (qui doit être public) puis retourne simplement cette instance,

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"; 
    } 
} 
0

Vous voulez essentiellement que single instance de thread à créer.
Si vous déclarez votre thread en tant que variable d'instance et statique, cela fonctionnera pour vous.

public class ThreadDelay { 
    static Thread t; 
    ... 

Écrivez simplement t=new Thread(); dans le bloc d'exécution. Mise à jour: Vous souhaiterez peut-être exécuter votre classe sur le serveur d'applications Tomcat.
Vous devez également utiliser Singleton class pour gérer la création de plusieurs objets Thread class. (En cas d'ouverture de dizaines de fenêtres d'invite de commande à la fois).