Введение в Java Многопоточность Интервью Вопросы и ответы

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

Ниже приведены топовые вопросы и ответы по многопоточности Java.

1. Что такое Thread в JAVA и как вы его реализуете?

Ответ:
Поток помогает облегчить многозадачность и многозадачность в программе. Он эффективно использует процессор и помогает повысить производительность приложения. Java позволяет пользователю использовать несколько потоков одновременно. Он может работать параллельно с другими программами без каких-либо перерывов. Это помогает сократить время на процесс. Например, если выполнение программы занимает 60 секунд, мы можем использовать 6 потоков, которые дадут нам результат через 10 секунд.

Java предоставляет два способа реализации потока в программе. Интерфейс java.lang.Runnable имеет экземпляр экземпляра java.lang. Поток, который требует выполнения задачи через экземпляр. Класс Thread уже реализует Runnable, поэтому пользователь может напрямую переопределить метод run (), расширив класс Thread или реализовав интерфейс Runnable.

2. Когда использовать Runnable и когда использовать Thread в Java?

Ответ:
Java не поддерживает множественное наследование класса, но позволяет реализовать несколько интерфейсов одновременно. Следовательно, будет лучше реализовать Runnable, чем расширять класс Thread.

3. Как вы различаете поток и процесс?

Ответ:
Поток - это подмножество процесса. Для одного процесса может быть запущено несколько потоков. Потоки могут запускать любую часть процесса. У процесса есть собственный адрес, в котором он хранится, а поток разделяет адрес процесса, который его создал. Создание процесса - беспокойный процесс, в то время как потоки могут быть созданы легко. Поток обычно называют легким процессом. Межпроцессное взаимодействие затруднено, в то время как потоки могут легко общаться, используя Java-методы wait () и notify (). Процессы независимы, поэтому любое изменение, внесенное в процесс, не влияет на дочерние процессы. Напротив, если изменения сделаны в потоке, есть вероятность, что другие потоки могут быть затронуты.

4. Почему говорят, что поведение потоков непредсказуемо?

Ответ:
Причиной этого является планировщик потоков, который обрабатывает выполнение потоков. Планировщик может иметь разную производительность на разных платформах Windows, UNIX, LINUX и т. Д. При выполнении одного и того же потока могут быть разные выходные данные на разных платформах, а иногда даже на одной и той же платформе. Чтобы решить эту проблему, пользователь может создать один и тот же объект Runnable, создать циклы run () в обоих потоках и запустить оба потока вместе. В идеале планировщик должен выбирать оба потока вместе, и на производительность это не должно влиять, но оба потока будут вводить циклы анонимно.

5. Что такое переменная переменная в Java и каково ее значение?

Ответ:
Java облегчает пользователю обмениваться переменными, присутствующими в разных потоках. Изменчивая переменная действует как специальный модификатор, который может использоваться только для переменных экземпляра. Поскольку эта переменная является общей, с ней будут происходить согласованные изменения. Поток должен гарантировать, что у него есть эксклюзивный доступ к этим переменным, и принудительная блокировка для взаимного исключения общих переменных. Это гарантирует, что запись произойдет до любого последующего чтения. Модель памяти Java обеспечивает согласованность этой переменной. Нестабильные методы не могут быть там, поскольку они могут использоваться только в форме переменных.

6. Какая польза от синхронизированного ключевого слова? В чем разница между синхронизированными и изменчивыми ключевыми словами?

Ответ:
Ключевое слово synchronized используется, когда целью является запуск только одного потока за раз в соответствующем разделе кода. Его можно использовать для отображения четырех типов различных блоков, как показано ниже:

1) методы экземпляра
2) Статические методы
3) Блоки кода внутри методов экземпляра
4) Блоки кода внутри статических методов

Это может быть объявлено как:

Открытый синхронизированный пример void () ()

Разница между ключевым словом volatile и synchronized заключается в том, что синхронизированный может использоваться с переменными и методами, в то время как volatile не может использоваться с методами. Изменчивые переменные не хранятся в кэш-памяти, синхронизированные переменные хранятся в кэш-памяти. Изменчивая переменная никогда не попадет в тупик, так как не требует получения какой-либо блокировки. Находясь в синхронизированных переменных, если они не выполнены должным образом, это может привести к тупику.

7. Почему такие методы, как wait (), notify () и notify all () присутствуют в классе объектов, а не в классе Thread?

Ответ:
Класс объекта имеет мониторы, которые позволяют потоку блокировать объект, тогда как у потока нет мониторов. Когда любой из вышеперечисленных методов вызывается, он ожидает, пока другой поток освободит объект, и уведомляет монитор, вызывая notify () или notify all (). Когда вызывается метод notify (), он выполняет работу по уведомлению всех потоков, ожидающих освобождения объекта. Монитор класса объекта проверяет наличие объекта или нет. Класс потока, имеющий эти методы, не помог бы, так как в объекте существует несколько потоков, а не наоборот.

8. Объясните разницу между методами sleep () и wait ().

Ответ:
1) метод sleep () вызывается для потоков, а не для объектов. Метод wait () вызывается для объектов.
2) Когда вызывается метод wait (), то монитор переводит поток из запущенного состояния в состояние ожидания. Как только поток находится в ожидании (), он может перейти в пригодный для выполнения только тогда, когда у него есть notify () или notifyall () для этого объекта. Планировщик меняет состояние после этого. Находясь в методе sleep (), состояние изменяется на ожидание и возвращается в рабочий режим только после окончания времени ожидания.
3) Метод Wait () является частью класса java.lang.Object, а sleep () является частью класса java.lang.Thread.
4) Wait () всегда используется с синхронизированным блоком, поскольку это требует блокировки объекта, в то время как sleep () может использоваться снаружи синхронизированного блока.

9. Как заставить запуск потока в Java?

Ответ:
В Java многопоточность не может принудительно запустить поток. Только планировщик потоков может управлять потоками, и они не доступны никакому API для контроля.

10. Оставляет ли поток блокировку объекта при вызове методов wait () и sleep ()?

Ответ:
Когда поток находится в методе sleep (), он не покидает блокировку и переходит в состояние ожидания. Поток ждет, пока закончится время сна. При использовании метода wait () поток покидает блокировку объекта и переходит в состояние ожидания. После вызова notify () он снова переходит в рабочее состояние и получает блокировку.

Рекомендуемая статья

Это было руководство к списку вопросов и ответов по многопоточности Java, чтобы кандидат мог легко разобраться с этими вопросами по многопоточности Java. Вы также можете посмотреть следующие статьи, чтобы узнать больше -

  1. Интервью с Java-разработчиками - как взломать 7 лучших вопросов
  2. Комплексное руководство по разработке приложений Java (Awesome Theory)
  3. Maven Интервью Вопросы и ответы | Лучшие и самые популярные
  4. 10 продвинутых вопросов по AngularJS для опытных