2017-05-03 3 views
0

나는 10 초의 지연으로 1에서 100까지의 숫자를 인쇄하는 Test라는 이름의 클래스가 있습니다. 내가 명령 프롬프트에서 열어 그것을 실행하려고하면 데이터 인쇄가 시작됩니다. 두 번째 명령 프롬프트를 열고이 프로그램을 실행하면 작동합니다. 하지만 난 그것을 단일 명령 프롬프트에서 실행해야합니다 제한하고 싶습니다. 우리는 어떻게 그것을 할 수 있습니다.톰캣 하나당 하나의 인스턴스 만들기

이 내 코드

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

제목과 텍스트가 충돌합니다. Tomcat 또는 명령 줄은 어느 것입니까? –

+0

그러면 해당 프로그램의 인스턴스 하나만 각 장치에서 실행될 수 있습니다. 난 그냥 절름발이 방법으로 로컬'Socket'을 열고 거기에 하나가 이미 열려 있다면 당신은 프로그램이 다른 곳에서 실행되는 것을 알 수 있습니다. – 3kings

답변

0

를 사용하여 싱글 톤 패턴이다. 가장 쉬운 구현은 private 생성자와 그 결과를 저장하는 필드와 getInstance()과 같은 이름을 가진 정적 접근 메소드로 구성됩니다.

개인 필드는 정적 이니셜 라이저 블록 내에서 할당 할 수 있으며,보다 간단하게 이니셜 라이저를 사용하여 지정할 수 있습니다. 당신은 기본적으로 만 single instancethread의를 원하는 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"; 
    } 
} 
0

생성합니다.
스레드를 인스턴스 변수로 선언하고 정적이라면이를 사용할 수 있습니다.

public class ThreadDelay { 
    static Thread t; 
    ... 

실행 블록 내에 단지 t=new Thread();으로 작성하십시오.


업데이트 : Tomcat 응용 프로그램 서버에서 클래스를 실행하고 싶을 수 있습니다.
Thread class 개체를 여러 개 생성하려면 Singleton class을 사용해야합니다. (한 번에 수십 개의 명령 프롬프트 창을 여는 경우).