2014-10-09 6 views
-2

Я новичок в теме, я просто написал простую программу, чтобы понять концепцию, эта программа дает мне выход, как:Тема - многопоточность

Один Четыре Три Назад в главной Два Мастер

public class Sample_thread{ 
    public static void main(String[] args){  
     Runnable m= new Master(); 
     Thread master = new Thread(m); 

     Runnable p1 = new one(); 
     Thread t1 = new Thread(p1);  

     Runnable p2 = new two(); 
     Thread t2 = new Thread(p2); 

     Runnable p3 = new Three(); 
     Thread t3 = new Thread(p3); 

     Runnable process_4 = new Four(); 
     Thread t4 = new Thread(p4); 

     master.start(); 
     t1.start(); 
     t2.start(); 
     t3.start(); 
     t4.start(); 

     System.out.println("Back in main");  
    } 
} 

Я печатаю имя потока в методе запуска каждого потока. Почему заказ изменился на дисплее?

Я думал, что это будет отображаться как

Мастер один Два Три Четыре Назад в главном

Может ли один объяснить мне это? Это потому, что я не упоминал о синхронизации?

+0

Что именно делает каждая из нитей? Они просто печатаются при запуске? – Clark

ответ

1

Это поведение, которое вы получаете с параллелизмом. Потоки запускаются «одновременно», но порядок не определен.

Вы можете иметь чтения через Oracle Concurrency Tutorial

1

Весь смысл использования нескольких потоков является выполнение в значительной степени независимые действия, которые могут возникнуть в любом порядке. Если вы хотите получить результат в заданном порядке, вы должны использовать цикл в одном потоке.

Смежные вопросы