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 |