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