Топ 40 въпроса за интервю за многопоточност на Java за 2021 г.

Този урок обхваща важни въпроси за многопоточно интервю за Java, заедно с въпроси за интервю за Java и въпроси за интервюта за Java.

Съдържание

1. Какво представлява нишката?

Нишката е подпроцес, който следва отделен път за изпълнение. Всяка нишка се изпълнява независимо, въпреки че те споделят едни и същи ресурси на процеса. Всяка нишка се изпълнява или изпълнява в различна рамка на стека.

2. Какво представлява многопоточността в java?

Многопоточността е процес на изпълнение на една или повече нишки едновременно, което помага при изпълнението на множество задачи едновременно. Всяка нишка се изпълнява независимо чрез споделяне на едни и същи ресурси.

3. Какви са предимствата на многопоточността?

  • Консумира по-малко памет
  • Изпълнението е бързо
  • По-ефикасно
  • Поддържа многозадачност
  • Изключението в едната нишка не засяга другата, тъй като нишките са независими

4. Какви са различните състояния в жизнения цикъл на една нишка?

  • НОВ
  • Изпълним
  • Работещи
  • Не се изпълнява
  • Прекратен

5. Какви са различните начини за създаване на нишка?

Има 2 начина за създаване на нишка:

  • Разширяване на нишката клас
  • Внедряване на Runnable клас

6. Каква е ползата от метода Thread.start ()?

Методът Thread.start () стартира процеса на нишката и се използва за изпълнение на метода run ().

7. Кои са различните конструктори на клас нишка в Java?

  • Тема ()
  • Нишка (име на низ)
  • Нишка (Runnable r)
  • Тема (Runnable r, име на низа)

8. Възможно ли е да стартирате нишка два пъти?

Това е една от често срещаните многопоточност java интервю въпроси.

Не, можем да започнем нишка два пъти. Когато се опитаме да рестартираме същата нишка, както в примера по-долу, ще получим IllegalThreadStateException, когато изпълни втория метод start () на същата нишка.

public class ThreadDemo extends Thread {
  
  public void run() {
    System.out.println("THread running");
  }

  public static void main(String[] args) {
    ThreadDemo t = new ThreadDemo();
    t.start();
    t.start();
  }

}
Exception in thread "main" THread running
java.lang.IllegalThreadStateException
  at java.base/java.lang.Thread.start(Thread.java:790)
  at ThreadDemo.main(ThreadDemo.java:11)

9. Какви са различните методи на нишка, която се използва за комуникация помежду си?

  • метод wait ()
  • метод за уведомяване ()
  • метод notifyAll ()

10. Каква е разликата между потребителска нишка и демонова нишка?

Потребителска нишкаDaemon нишка
Нишка с висок приоритетНишка с нисък приоритет
Работи на преден планРаботи във фонов режим
Изпълнява конкретна сложна задачаИзпълнява поддържаща задача
JVM винаги чака активната потребителска нишка да завърши преди изключванеJVM не чака завършването на демона преди изключване
Създаден от приложението Java за изпълнение на някаква задачаСъздадено от JVM
Тя е независимаЗависи от потребителските нишки

11. Как да поставя на пауза изпълнението на нишката за определено време?

Можем да използваме метода sleep (), за да накараме нишката да спре паузата си за определено време. След като се събуди, той променя състоянието на изпълним и изпълнява въз основа на планиращия поток.

12. Какво е приоритет на нишките?

Всяка нишка има приоритет със стойност, варираща от 1 до 10, където 1 е най-ниската, а 10 е най-високата. Нишката с най-висок приоритет винаги има предимство да се изпълнява първа, но също така зависи от изпълнението на Thread Scheduler.

13. Какво представлява планирането на нишки и нарязването на времето?

Планировщикът на нишки е услуга, която принадлежи на операционната система който планира или разпределя процесорно време за изпълнение на нишка. След като създадем нишка и я стартираме, планировчикът на нишки решава кога да изпълни нишката въз основа на нейното изпълнение.

Нарязването на времето е процес на гмуркане на наличното време на процесора за изпълними нишки. Това може да зависи от приоритета на нишката и времето за изчакване на нишката.

14. Какво представлява превключването на контекста при многопоточност?

Превключването на контекста е процес, използван при многозадачност или многонишково където можем да съхраняваме и възстановяваме състоянието на процесора на нишка. Това помага за продължаване на изпълнението на нишката от същата точка, където е била на пауза след определено време.

15. Защо извикваме методите wait (), notify () и notifyAll () от синхронизирания метод или блок?

Всички тези методи имат зависимост от обектния монитор, защото ако нишката е в състояние на изчакване, тя напуска монитора на обекта и се връща, докато извика метода notify (). Тъй като всички тези методи изискват синхронизация помежду си, трябва да ги извикваме само от синхронизирания метод или блок.

16. Как да постигнем безопасност на нишките в Java?

  • синхронизация
  • Атомен паралелен клас
  • Интерфейс за едновременно заключване
  • волатилна ключова дума
  • неизменни класове
  • Класове, безопасни за нишките

17. Каква е ползата от променлива ключова дума?

Когато декларира променлива като нестабилен, той чете стойността на променливата директно от паметта, вместо от кеша.

18. Как да създам демонова нишка?

Можем да създадем демонова нишка, използвайки метода setDaemon (true) от класа Thread. Трябва да използваме този метод, преди да извикаме метода start (), иначе той ще хвърли IllegalThreadStateException.

19. Какво представлява изхвърлянето на нишки в Java?

Thread Dump е група активни нишки, които се използват за анализ на тесни места и ситуации на задънена улица. Можем да генерираме изхвърляне на нишка с помощта на профилиране, команда kill-3, инструмент jstack и т.н.

20. Какво е задънена улица? Как да анализираме и да избегнем мъртва ситуация?

Блокирането е ситуация, при която нишките са блокирани завинаги. Това се случва, когато две или повече нишки имат достъп до един и същ ресурс, който зависи един от друг. С други думи, нито една от нишките не се изпълнява, при което едната нишка чака изпълнението на другата нишка, която вече е в състояние на изчакване.

Можем да анализираме ситуация на задънена улица, като разгледаме сметището на нишки и потърсим нишки в състояние BLOCKED.

Можем да избегнем блокирането, като избягваме използването на вложени ключалки, чакаме безкрайно и заключваме само това, което се изисква.

21. Каква е разликата между методите wait () и sleep ()?

Методът wait () е част от Клас на обекта и се използва за освобождаване на заключването, докато методът sleep () е част от класа Thread и не освобождава заключване.

22. Какво представлява методът join ()?

Методът join () изчаква изпълняваната в момента задача да спре изпълнението, докато се присъедини към завършения списък със задачи. С други думи, той чака нишката да премине в прекратеното състояние.

23. Какво е комуникация между нишки?

Комуникацията между нишки е процесът на комуникация между синхронизираните нишки и се използва за избягване на анкетиране на нишки. Това е полезно, когато една нишка спира изпълнението си в критично състояние и позволява на друга нишка да влезе в изпълнението в същото критично състояние.

24. Какви са разликите между процес и нишка?

ПроцесНишка
Процесът е програма в изпълнениеНишката е подмножество на процес
Процесите поддържат различно адресно пространствоThreads поддържа същия адрес
Превключването на контекста е по-бавноПревключването на контекст е по-бързо
Комуникацията между процесите е по-бавнаКомуникацията между нишките е по-бърза
Всяка промяна в родителския процес не засяга дъщерния процесВсяка промяна в родителската нишка ще се отрази на дъщерната нишка

25. Какво е кука за изключване?

Куката за изключване е нишка, която имплицитно се извиква от JVM за почистване на ресурсите преди изключване на JVM или нормално, или внезапно.

26. Кога можем да прекъснем нишка?

Можем да прекъснем нишка, когато искаме нишката да се събуди от състояние на заспиване или изчакване. Можем да направим това, като извикаме метода interrupt (), който изхвърля InterruptExeception.

27. Какво е синхронизация?

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

Можем да постигнем синхронизация по следните 3 начина:

  • Чрез метод на синхронизация
  • Блок за синхронизация
  • статична синхронизация

28. Какво е състоянието на състезанието?

Състезателно състояние е сериозен проблем, който възниква поради неправилно използване на синхронизацията, когато множество нишки изпълняват една и съща задача едновременно.

29. Какво е пул от нишки?

Пул от нишки представлява група от нишки, които чакат задача. Доставчикът на услуги изтегля по една нишка и му възлага задача. След като завърши, нишката отново се връща обратно в пула от нишки. Използвайки пул от нишки, можем да постигнем по-добра стабилност на системата и по-добра производителност.

30. Кои са основните компоненти на API за паралелна валута?

API на Concurrency може да бъде реализиран с помощта на различните класове и интерфейс на пакета Concurrency, които са изброени по-долу:

  • изпълнител
  • ExecutorService
  • ScheduledExecutorService
  • Бъдеще
  • TimeUnit
  • ThreadFactory
  • Брави
  • DelayQueue
  • Блокираща опашка
  • семафор
  • Phaser
  • Циклична бариера
  • CountDownLatch
  • FarkJoinPool

31. Какво представлява интерфейсът Executor в приложния програмен интерфейс (API) на Concurrency?

Интерфейсът Изпълнител се използва за изпълнение на определена задача. Той принадлежи към пакета java.util.concurrent, който съдържа метод execute ().

32. Какво е BlockingQueue?

BlockingQueue е дъщерният интерфейс на интерфейса на опашката, където съдържа методи за изчакване на наличното пространство, преди да се вмъкне нова стойност, и изчакайте опашката да стане празна, преди да извлече стойност.

33. Каква е разликата между Java Callable и Runnable интерфейс?

И двата Java Callable и Runnable интерфейса се използват за изпълнение на множество задачи. По-долу са разликите:

Извикваем интерфейсИзпълним интерфейс
Връща стойностНе връща никаква стойност
хвърля CheckedExceptionне хвърля CheckedException
Не е налично преди Java 5Предлага се преди Java 5

34. Какво е атомното действие в паралелността?

Атомното действие е операция, при която изпълнява една задача, без намеса на други методи. Той е част от пакета Concurrent. След като атомното действие започне, не можем да го спрем или поставим на пауза между тях. Трябва да изчакаме, докато завърши пълното действие. Всички области и операции на запис на примитивни променливи и променливи променливи са атомни операции.

35. Какво представлява интерфейсът за заключване в Concurrency?

За реализиране на синхронизация се използва интерфейс за заключване. Той е подобен на синхронизиран блок, но има малко разлики. Интерфейсът за заключване съдържа метода lock () и unlock () и гарантира реда, в който нишките очакват изпълнение. Освен това поддържа операции за изчакване.

36. Какво е интерфейс ExecutorService?

Интерфейсът ExecutorService е подинтерфейс на интерфейса Executor, който има специални функции за управление на кръговат на живота.

37. Каква е разликата между синхронното и асинхронното програмиране?

При синхронното програмиране, когато нишката започне да работи по дадена задача, тя е достъпна за други задачи само след като зададената задача е изпълнена.

При асинхронното програмиране множество нишки могат да изпълняват една и съща задача.

38. Каква е разликата между начина на стартиране и бягане?

Методът start създава нова нишка и вътрешно извиква метода run за изпълнение на кода за новата нишка

Методът run изпълнява кода за съществуващата нишка.

39. Каква е разликата между метода notify () и notifyAll ()?

Методът notify () деблокира една чакаща нишка, докато методът notifyAll () отключва всички чакащи нишки.

40. Помислете, че има 3 нишки T1, T2 и T3. Как можем да гарантираме, че T2 се изпълнява след T1 и T3 се изпълнява след T2?

Това е един от често задаваните въпроси за интервюта за многопоточност. Отговорът е, че можем да гарантираме това, като използваме метода join ().

Заключение

В този урок ние разгледахме най-добрите въпроси за многопоточност на Java, въпроси за интервюта за многопоточност, въпроси за интервю за Java нива, въпроси за интервю за Java с много нишки, въпроси за многопоточност на Java, въпроси за едновременно интервю за Java.

Translate »