THREAD: while (true) -> Systemleistung zu hoch



  • Hallo,

    ich lasse zur Erkennung eines Datenstroms der über einen Socket
    (InputStream) kommt extern einen Thread laufen. In diesem
    läuft eine while (true) Schleife in der eine IF Abfrage läuft, die
    bei Erreichen eines bestimmten Stringteils etwas ausführt.

    Der Sting der überprüft wird, wird erstellt von einem anderen Thread, der sich
    um die ankommenden Daten des InputStreams kümmert.

    Leider läuft das System dabei auf 100%.

    Meine Frage ist, wie würdet ihr die Prüfung druchführen, ohne das
    dass System diese hohe Leistung benötigt?

    Hier der Thread für die ankommenden Daten.

    class th extends Thread
    {
    	InputStream in;
    
    	public th(InputStream in)
    	{
    		this.in = in;
    	}
    
    	public void run()
    	{
    		try
    		{
    			int c;
    			while (((c = in.read()) != -1))
    			{
    				controll.Nachricht += (char)c;
    
    			}
    		}catch (IOException e) 
    	         {
    	             System.err.println(e.toString());
    		    System.exit(1);
    		}
    	}
    
    }
    

    Und hier wird der String der oben erstellt wird geprüft!

    class Abfangen extends Thread
    {
    	public void run()
    	{
    		while (true)
    		{
    			if((controll.Nachricht.indexOf("\r\n"))
    			{
    	                     // hier kommt jetzt meine Bearbeitung
    			}
    		}
    	}
    }
    

    Vielen Dank schon mal für eure Hilfe.

    -Patrick





  • dank dir!!!!


Anmelden zum Antworten