3.2 KiB
title | localeTitle |
---|---|
Multithreading | Многопоточность |
Многопоточность
Многопоточность - это процесс одновременного выполнения нескольких процессов. Java запускает программу с основным потоком, и дальнейшие потоки добавляются в основной поток всякий раз, когда любой пользователь создает ее. Основной поток - это первый пользовательский поток в любой Java-программе. Кроме того, JVM гарантирует, что все пользовательские потоки будут закрыты до завершения программы.
Нить имеет как преимущества, так и недостатки.
Преимущества:
- Запуск кода независимо от других потоков.
- Создание модульного дизайна.
Недостатки:
Условия гонки и Deadlock, если потоки не синхронизированы должным образом.
Темы можно разделить на два класса:
- Пользовательские темы
- Темы Демона
Нить может быть создана двумя способами:
-
реализация интерфейса Runnable: В интерфейсе Runnable существует только один метод, т.е. public void run (). Внедрение этого метода гарантирует, что всякий раз, когда этот поток запускает код внутри run (), выполняется.
-
расширяющий класс резьбы. Этот класс также содержит открытый void run (), который нам нужно переопределить, чтобы запустить наш собственный код. Недостаток использования этого метода заключается в том, что у нас есть суперкласс в Thread и не может распространять любой другой класс, который мы можем захотеть.
Код для обоих можно найти здесь: http://ide.geeksforgeeks.org/k7GjcA.
Вы заметите, что если этот код запускается несколько раз, результаты могут отличаться. и это определяется ОС, на которой она запущена. ОС может выбрать любой поток из состояния runnable и запустить его. У нас нет НИКАКОГО УПРАВЛЕНИЯ. Если в запущенном состоянии есть несколько потоков (готово к запуску), любой может быть выбран. Это даже не зависит от приоритета.
Дополнительные сведения: https://www.ntu.edu.sg/home/ehchua/programming/java/J5e_multithreading.html