Пользователи считают само собой разумеющимся, что их системы могут делать более одной задачи одновременно. Они предполагают, что могут продолжать работать в текстовом редакторе, в то время как другие приложения загружают файлы, управляют очередью печати и транслируют аудио. … Программное обеспечение, которое может делать такие вещи, называется параллельным программным обеспечением.

- Учебники по Java

Что такое параллельное программное обеспечение?

Я не мог найти лучшего определения в отношении параллельного программирования, чем то, что написано в The Java Tutorials. Это называется несколько последовательностей операций, выполняемых в перекрывающиеся периоды времени. Java поддерживает параллелизм с классом Thread.

Что такое поток?

Поток - это поток выполнения в программе. JVM позволяет приложению иметь несколько потоков выполнения, работающих одновременно. Для глубокого понимания многопоточной среды, которую предоставляет Java, вам необходимо знать, как потоки взаимодействуют друг с другом.

У каждого потока есть приоритет. Потоки с более высоким приоритетом выполняются вместо потоков с более низким приоритетом. Каждый поток может быть отмечен или не отмечен как демон.

Демонический поток - это поток с низким приоритетом, который работает в фоновом режиме для выполнения таких задач, как сборка мусора. Когда код, выполняющийся в каком-либо потоке, создает новый объект потока, приоритет нового потока изначально устанавливается равным приоритету создаваемого потока, и он является потоком демона тогда и только тогда, когда создающий поток является демоном.

Как создается тема?

Приложение, которое создает экземпляр Thread, должно предоставить код, который будет выполняться в этом потоке. Есть два способа сделать это :

Один из способов - создать подкласс, расширяющий Thread, и переопределить его метод run. Или вы можете указать объект Runnable непосредственно в качестве параметра. Runnable интерфейс определяет единственный метод, run, который содержит код выполнения.

Объект Runnable передается конструктору Thread, как в примере. Какой выглядит лучше? Согласно документации ORACLE, использование объекта Runnable является более общим, поскольку вы можете расширить класс, отличный от Thread.

Операции с потоком

Приостановка выполнения со сном

Thread.sleep() заставляет текущий поток приостанавливать выполнение на заданный период. Когда запущенный метод запрашивается прерыванием, поток выдает InterruptedException, что обычно происходит, когда поток прерывает другой активный поток.

Прерывание выполнения с прерыванием

Thread.interrupt(), в отличие от Thread.sleep, заставляет текущий поток останавливать выполнение и делать что-то еще. Поток отправляет прерывание, вызывая прерывание на объекте Thread, чтобы поток был прерван.

Ожидание другого треда с присоединением

Метод join позволяет одному потоку ждать, пока другой закончит свою работу. Если newThread - это текущий рабочий поток, newThread.join заставляет выполнение присоединиться к основному потоку. Затем основной поток приостанавливает свою работу до завершения нового потока.

Результат

Thread объект был разработан на Java, чтобы позволить разработчикам выполнять столько операций, сколько им нужно. Таким образом, они сами решают, сколько потоков будет создано, отреагировать на прерывание и работать в интерактивном режиме в течение определенного времени.

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

Спасибо, что прочитали этот пост.

использованная литература