2016-04-16 15 views
3

Ich möchte zwei threads.One Thread schaffen ungerade Zahlen drucken haben und der andere Thread auch Zahlen zwischen 1-20 Zahlen drucken müssen. Dies ist der Code, den ich bisher versucht habe, aber es gibt nicht die erwartete Ausgabe. Erstellen von zwei Threads in Java

public class JavaApplication40 extends Thread { 
    @Override 
    public void run(){ 
     while (true){ 
      for (int i=0;i<=20;i++){ 
      if(i%2!=0){ 
       System.out.println("odd " +i); 
      } 
     } 
     } 
    } 

    public static void main(String[] args) { 
     Thread t =new JavaApplication40(); 

     for (int x=0;x<=20;x++){ 
      if(x%2==0){ 
      System.out.println("even " + x); 
      } 
     } 

    } 

} 

Dieser Code nur gibt sogar numbers.I wollen ungerade Zahlen too.Someone mir bitte sagen, wie ich den obigen Code ändern kann die erwartete Ausgabe zu erhalten.

+1

Sie haben den Thread nicht gestartet. Einreichung in einem Testamentsvollstrecker ist gut. –

+0

sollte ich die Startmethode nach diesem Code aufrufen? Thread t = neu JavaApplication40(); Wo sollte ich die Startmethode angeben? – Char

+0

Kurz nach ist das in Ordnung, aber garantieren tut es beginnt sofort –

Antwort

3

Nachdem Sie eine Thread Sie müssen erstellen start() nennen sie es zu starten. Versuchen Sie anzurufen

t.start(); 

Darüber hinaus sollten Sie Thread erweitern. Stattdessen sollten Sie Runnable implementieren und es mit einem Thread umschließen. Außerdem müssen Sie nicht überprüfen, ob ein Wert ungerade oder gerade ist, wenn Sie sicherstellen, dass der Wert immer ungerade oder gerade ist.

public class JavaApplication40 { 
    public static void main(String[] args) { 
     Thread t = new Thread(new Runnable() { 
      public void run() { 
       // starting at 1 and counting by 2 is always odd 
       for (int i = 1; i < 10000; i += 2) 
        System.out.println("odd " + i); 
      } 
     }); 
     t.start(); 

     // starting at 0 and counting by 2 is always even 
     for (int x = 0; x < 10000; x+=2) 
      System.out.println("even " + x);  
    } 
} 

Hinweis: der ganze Sinn der Verwendung von Threads ist unabhängig Ausführung und Threads Zeit zu beginnen, um zu haben. Dies bedeutet, dass Sie alle geraden und ungeraden Zahlen zusammen erhalten können. d. h. es druckt sie schneller als ein Thread startet.

Möglicherweise müssen viel mehr Zahlen drucken Sie sie zur gleichen Zeit gedruckt zu sehen. z.B. 10_000 anstelle von 20.

+0

Vielen Dank für Ihre Erklärung so viel – Char

+0

Sie die Startmethode aufgerufen, nachdem die Erstellung der thread t richtig? – Char

+0

@Char das ist, was es tut, beachten Sie, dass es Zeit braucht, um zu starten, so dass Sie viele "gerade" Nachrichten vor der ersten "ungeraden" Nachricht sehen können. –

1

Sie erstellt Thread, aber es nie gestartet.

Thread t =new JavaApplication40(); 

schafft es, beim Start, wird es nennen run()

es Beginnen Sie mit t.start()

1
ExecutorService es=Executors.newFixedThreadPool(2); 
es.submit(t); 
for .... 

es.shutdown(); // .shutdownNow() for infinite looped threads