Java Thread beendet sich nicht mit interupt Methode



  • Hallo . Ich habe folgenden Code :

    /******************************************************/
    	private static NetworkServer networkServerInstance;	
    	private NetworkClient client1, client2;
    	private boolean runServer	= true;
    	/******************************************************/
    
    	/**
    	 * 
    	 * @return
    	 */
    	public static NetworkServer getNetworkServerInstance() {
    		if (networkServerInstance ==  null) {
    			networkServerInstance	= new NetworkServer();
    		}		
    		return networkServerInstance;
    	}
    
    	/**
    	 * 
    	 */
    	private NetworkServer() {
    		this.client1	= null;
    		this.client2	= null;
    	}
    
    	public void stopServer(){
    		this.runServer	= false;
    	}
    
    	@Override
    	public void run() {
    
    		while (! isInterrupted()){
    			System.out.println("Server is running " + runServer);
    
    		      try
    		      {
    		       Thread.sleep( 500 );
    		      }
    		      catch ( InterruptedException e )
    		      {
    		       interrupt();
    		       System.out.println( "Unterbrechung in sleep()" );
    		      }
    
    		}
    
    		System.out.println("Server stopps");
    	}
    
    	public static void main(String[] args) {
    		NetworkServer.getNetworkServerInstance().run();
    		try {
    			Thread.sleep( 2000 );
    		} catch (InterruptedException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		NetworkServer.getNetworkServerInstance().interrupt();
    	}
    

    Ich habe gedacht nach dem Aufrif der Interrupt Methode würde sich der Thread beenden. Ich habe mir hier die Informationen geholt :
    http://openbook.galileocomputing.de/javainsel9/javainsel_14_003.htm#mj00ef8d8369b2f161f338e0395d2d3375

    Kann mir jemand helfen ?



  • leider hast du nicht die ganze klasse kopiert...
    ich vermute du hast von thread geerbt?

    im moment sieht es aber so aus, als würdest du keinen neuen thread starten, sondern einfach nur die run methode aufrufen
    du musst start() aufrufen


Anmelden zum Antworten