2016-08-16 5 views
-2

Напишите поток, который насчитывает от 1 до 10, и другой поток, который насчитывает от 1 до 10, один за другим.create-two-threads-both -display-numbers-one after one

Для например: Резьба1 Выход: 1 Резьба2 Выход: 1 Резьба1 Выход: 2 Резьба2 Выход: 2

Я написал ниже код

public class Test1 extends Thread 
{ 
public void run(){ 
    for(int i=1;i<=10;i++){ 
     //System.out.println(i); 
     try{ 
      System.out.println(Thread.currentThread().getName()+"+i); 
      Thread.sleep(500); 

     }catch(Exception e){ 
      System.out.println(e); 

     } 
    } 
} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    Test1 t1=new Test1(); 
    Test1 t2=new Test1(); 
    //Test1 t3=new Test1(); 
    t1.start(); 
    t2.start(); 
    //t3.start(); 

} 

} 

Got the output as:- 
Thread-1 1 
Thread-0 1 
Thread-1 2 
Thread-0 2 
Thread-0 3 
Thread-1 3 
Thread-0 4 
Thread-1 4 
Thread-1 5 
Thread-0 5 
Thread-1 6 
Thread-0 6 
Thread-1 7 
Thread-0 7 
Thread-1 8 
Thread-0 8 
Thread-1 9 
Thread-0 9 
Thread-1 10 
Thread-0 10 

Но выход не в последовательность Я хочу выход как: Thread1 Выход: 1 Thread2 Выход: 1 Thread1 Выход: 2 Thread2 Выход: 2

+0

Я новичок в теме concept.Could вы помочь мне достичь Синхронизировать, так что потоки будут печатать одну за другой до последней последовательности –

ответ

-1

Вы не можете повлиять на это ... 2 нити, работающие параллельно не детерминированный ...

Это означает, что если процессор имеет некоторые бесплатные ресурсы, которые будут принимать поток и сделать «шаг» ... но вы не можете повлиять на то, какой поток он будет.

Взгляните: Can a multi-threaded program ever be deterministic?