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, имена потоков и непредсказуемый порядок выполнения.