# Thread



## chrism120 (5. Sep 2019)

Hallo, 
ich bin noch neu mit Java und versuche  2 Threads zu erstellen. unter ist meine Quellekode. es funktionniert nicht ich will. nur das erste Thread läuft. ich möchte das das zweite thread nach einer bestimmten Anzahl an Ip Adresse läuft. aber in diesem fall hab ich nur das erste thread das für mein ganzes Programm läuft. danke im Voraus für Eure Antwort.

```
// Thread
    
    Thread t1 = new Thread (new Runnable() {
        
         public void run () {
              
            
             for (int i =0;i<10;i++)
        
             while(!Arrays.equals(ip1,ip2) ) {
                 try {
                  
       InetAddress ad= InetAddress.getByName(bytesToIpv4(ip1));
       count(ip1);
      
       //Erreichbarkeit prüfen
      
       if(ad.isReachable(5)) {
          
       System.out.println("Der Computer  " + ad.getHostName() + " gefunden"+" ist von erstem Thread" );
  
       }
         } catch (IOException e) {}
               }
     s1.close();
      s2.close();

             }
         }
         );

 t1.start();
 Thread t2 = new Thread (new Runnable() {
    
        public void run () {
            
            for (int i =0;i>10;i++)
            
            while(!Arrays.equals(ip1,ip2) ) {
                try {
                  
    InetAddress ad= InetAddress.getByName(bytesToIpv4(ip1));
    count(ip1);
    //Erreichbarkeit prüfen
    
    if(ad.isReachable(5)) {
        
    System.out.println("Der Computer  " + ad.getHostName() + "  gefunden" + " ist von zweitem Thread" );

    }
         } catch (IOException e) {}
            }
  s1.close();
     s2.close();
    
            }
        }
        );

t2.start();
```


----------



## Flown (5. Sep 2019)

Dein zweiter Thread läuft auf nicht wegen: `for (int i = 0; i > 10; i++)`. Die Bedingung ist immer false


----------



## chrism120 (6. Sep 2019)

Flown hat gesagt.:


> Dein zweiter Thread läuft auf nicht wegen: `for (int i = 0; i > 10; i++)`. Die Bedingung ist immer false


ach so. was würdest Du an meiner Stelle machen ?


----------



## temi (6. Sep 2019)

chrism120 hat gesagt.:


> was würdest Du an meiner Stelle machen ?



Man könnte ja `i < 10` stattdessen schreiben, dann wird die Schleife 10 mal durchlaufen und vermutlich möchtest du das ja.


----------



## chrism120 (6. Sep 2019)

temi hat gesagt.:


> Man könnte ja `i < 10` stattdessen schreiben, dann wird die Schleife 10 mal durchlaufen und vermutlich möchtest du das ja.


Die erste Schleife
	
	
	
	





```
for (int i =0;i<30;i--)
```
die zweite Schleife 
	
	
	
	





```
for (int i =30;i<100;i--)
```


----------



## chrism120 (6. Sep 2019)

temi hat gesagt.:


> Man könnte ja `i < 10` stattdessen schreiben, dann wird die Schleife 10 mal durchlaufen und vermutlich möchtest du das ja.


Ich habe zum Beispiel. ich habe als erste Adresse 1.0.0.1 und zweite Adresse 1.0.0.100 eigegeben. 
auf der konsole habe ich folgende Informationen.

 Die Adresse  Thread 2 ist 1.0.13.91
 Die Adresse  Thread 1 ist 1.0.13.92
 Die Adresse  Thread 2 ist 1.0.13.93
 Die Adresse  Thread 1 ist 1.0.13.94
 Die Adresse  Thread 2 ist 1.0.13.95
 Die Adresse  Thread 1 ist 1.0.13.96
 Die Adresse  Thread 2 ist 1.0.13.97
 Die Adresse  Thread 1 ist 1.0.13.98
 Die Adresse  Thread 2 ist 1.0.13.99
 Die Adresse  Thread 1 ist 1.0.13.100
 Die Adresse  Thread 2 ist 1.0.13.101
 Die Adresse  Thread 1 ist 1.0.13.102
 Die Adresse  Thread 2 ist 1.0.13.103
 Die Adresse  Thread 1 ist 1.0.13.104
 Die Adresse  Thread 2 ist 1.0.13.105
 Die Adresse  Thread 1 ist 1.0.13.106
 Die Adresse  Thread 1 ist 1.0.13.108
 Die Adresse  Thread 1 ist 1.0.13.109
 Die Adresse  Thread 1 ist 1.0.13.110
 Die Adresse  Thread 1 ist 1.0.13.111
 Die Adresse  Thread 1 ist 1.0.13.112
 Die Adresse  Thread 1 ist 1.0.13.113
 Die Adresse  Thread 1 ist 1.0.13.114
 Die Adresse  Thread 1 ist 1.0.13.115
 Die Adresse  Thread 1 ist 1.0.13.116
 Die Adresse  Thread 1 ist 1.0.13.117
 Die Adresse  Thread 1 ist 1.0.13.118
 Die Adresse  Thread 1 ist 1.0.13.119
 Die Adresse  Thread 1 ist 1.0.13.120
 Die Adresse  Thread 1 ist 1.0.13.121
 Die Adresse  Thread 1 ist 1.0.13.122
 Die Adresse  Thread 1 ist 1.0.13.123
 Die Adresse  Thread 1 ist 1.0.13.124
 Die Adresse  Thread 1 ist 1.0.13.125
 Die Adresse  Thread 1 ist 1.0.13.126
 Die Adresse  Thread 1 ist 1.0.13.127
 Die Adresse  Thread 1 ist 1.0.13.128
 Die Adresse  Thread 1 ist 1.0.13.129
 Die Adresse  Thread 1 ist 1.0.13.130
 Die Adresse  Thread 1 ist 1.0.13.131
 Die Adresse  Thread 1 ist 1.0.13.132
 Die Adresse  Thread 1 ist 1.0.13.133
 Die Adresse  Thread 1 ist 1.0.13.134
 Die Adresse  Thread 1 ist 1.0.13.135
 Die Adresse  Thread 1 ist 1.0.13.136
 Die Adresse  Thread 1 ist 1.0.13.137
 Die Adresse  Thread 1 ist 1.0.13.138
 Die Adresse  Thread 1 ist 1.0.13.139
 Die Adresse  Thread 1 ist 1.0.13.140
 Die Adresse  Thread 1 ist 1.0.13.141
 Die Adresse  Thread 1 ist 1.0.13.142
 Die Adresse  Thread 1 ist 1.0.13.143


----------



## temi (6. Sep 2019)

Außerdem empfehle ich dir dringend:

Mach deine Einrückungen ordentlich
Arbeite immer mit den geschweiften Klammern, auch wenn sie im besonderen Fall gerade nicht nötig sind.


----------



## chrism120 (6. Sep 2019)

ich möchte nur die Adressen  aus diesem "Range" bekommen mit verschiedenen Threads wie definiert als festgelegt.


----------



## temi (6. Sep 2019)

chrism120 hat gesagt.:


> ich möchte nur die Adressen  aus diesem "Range" bekommen mit verschiedenen Threads wie definiert als festgelegt.



Von mir aus, aber:



temi hat gesagt.:


> Außerdem empfehle ich dir dringend:
> 
> Mach deine Einrückungen ordentlich
> Arbeite immer mit den geschweiften Klammern, auch wenn sie im besonderen Fall gerade nicht nötig sind.



Nach deiner for-Schleife kommt keine sich öffnende geschweifte Klammer, d.h. der Schleifenrumpf (das was ausgeführt wird) besteht aus genau einer Anweisung. Bei dieser Anweisung handelt es sich um die while-Schleife. Darum funktioniert es überhaupt. Solltest du irgendwann auf die Idee kommen, vor dem "while" noch eine weitere Anweisung schreiben zu müssen, dann ist es damit vorbei.


----------



## chrism120 (6. Sep 2019)

temi hat gesagt.:


> Von mir aus, aber:
> 
> 
> 
> Nach deiner for-Schleife kommt keine sich öffnende geschweifte Klammer, d.h. der Schleifenrumpf (das was ausgeführt wird) besteht aus genau einer Anweisung. Bei dieser Anweisung handelt es sich um die while-Schleife. Darum funktioniert es überhaupt. Solltest du irgendwann auf die Idee kommen, vor dem "while" noch eine weitere Anweisung schreiben zu müssen, dann ist es damit vorbei.


Ok danke. mache ich und sag Dir Bescheid!


----------

