Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Thread.start()

Запускает поток: его код начинает выполняться параллельно с вызывающим.

Доступно с: Java 1.0

Синтаксис

public void start()

Примеры

Два потока считают каждый свою часть:

void main() throws InterruptedException {
    long[] sums = new long[2];
    Thread a = new Thread(() -> { for (int i = 1; i <= 500; i++) sums[0] += i; });
    Thread b = new Thread(() -> { for (int i = 501; i <= 1000; i++) sums[1] += i; });
    a.start();
    b.start();
    a.join();
    b.join();
    IO.println(sums[0] + sums[1]);
}

Результат:

500500

Примечания

Вызов run() вместо start() — частая ошибка: код выполнится в текущем потоке, без параллельности. Запустить один и тот же объект Thread дважды нельзя — IllegalThreadStateException. Порядок работы потоков не определён, поэтому для результата нужно дождаться их через join().

См. также

  • Thread — Поток выполнения: позволяет программе делать несколько дел одновременно.
  • Thread.join() — Ждёт, пока поток завершится.
  • Runnable — Задача без аргументов и без результата.

В учебнике

  • Потоки выполнения — Потоки в Java — класс Thread, запуск через start, ожидание через join, Thread.sleep, имена потоков и непредсказуемый порядок выполнения.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.