Как контролируется порядок выполнения метода run двух потоков?

2

Запуск этого кода дает следующий результат:

 Name of t1:Thread-0
  Name of t2:Thread-1
  id of t1:8
  running...
  After changing name of t1:Sonoo Jaiswal
  running...

Должна ли последняя строка "running..." не печататься сразу после первой строки "running..."? Вот code--

class TestJoinMethod3 extends Thread{
  public void run(){
   System.out.println("running...");
  }
 public static void main(String args[]){
  TestJoinMethod3 t1=new TestJoinMethod3();
  TestJoinMethod3 t2=new TestJoinMethod3();
  System.out.println("Name of t1:"+t1.getName());
  System.out.println("Name of t2:"+t2.getName());
  System.out.println("id of t1:"+t1.getId());

  t1.start();
  t2.start();

  t1.setName("Sonoo Jaiswal");
  System.out.println("After changing name of t1:"+t1.getName());
 }
}
  • 6
    Как контролируется порядок выполнения метода run двух потоков? Это не так .
  • 1
    Если вы вернетесь и посмотрите на документацию, в которой говорилось о том, как создавать потоки, вы должны увидеть информацию о том, как контролировать их относительное выполнение.
Показать ещё 4 комментария
Теги:
multithreading

2 ответа

1
Лучший ответ

Там нет никакого контроля.

Это так просто. Темы, в первую очередь, независимы друг от друга. Поэтому точный порядок, в котором происходят события, не может быть предсказан.

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

0

Должна ли последняя строка "running..." не печататься сразу после первой строки "running..."? Вот code--

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

Вся суть потоков - это асинхронная операция. Если поток блокируется на некотором IO, тогда другие потоки могут работать в фоновой обработке другой информации. Это сила многопоточных программ. Если вы хотите контролировать их, чтобы они выплевывали сообщения в некотором порядке, вы могли бы просто запускать вещи в одном потоке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню