Введение Java Интервью Вопросы и ответы по многопоточности
Прежде чем перейти к вопросам интервью на Java по многопоточности, давайте обсудим некоторые факты о многопоточности.
# 1 - Итак, мы должны сначала знать, что это за нить?
Это самая маленькая единица обработки определенной работы, называемая потоком. Это легкий по своей природе, так простой в использовании. Теперь нам приходит в голову, что для чего нам это нужно, многопоточность используется для достижения многозадачности. Многозадачность может быть достигнута и другим способом, и она называется Multiprocessing.
Тем не менее, многопоточность более популярна, и ее эффективнее использовать над многопроцессорной обработкой, поскольку потоки имеют свойства, которые используются в области общей памяти, тогда как в случае многопроцессорной обработки она потребляет много памяти и других ресурсов, что неэффективно.
Поэтому процесс одновременного выполнения нескольких потоков для выполнения некоторой работы называется многопоточностью.
Некоторые преимущества использования многопоточности:
- Потоки работают независимо, поэтому они не зависят от других операций, выполняемых в системах, и, таким образом, можно выполнять несколько операций одновременно.
- Потребление времени меньше с использованием многопоточности, так как многие операции могут выполняться одновременно.
- Потоки независимы, как уже обсуждалось, поэтому исключение, возникающее в одном потоке, не будет мешать работе других потоков.
- Стоимость связи между двумя нитями низкая.
Мы можем добиться многозадачности следующими двумя способами:
- Многозадачность на основе процессов (Multiprocessing)
- Многозадачность на основе потоков (Multithreading)
ПРИМЕЧАНИЕ. Поскольку мы обсуждаем многопоточность, мы сосредоточимся на многозадачности на основе потоков.
Жизненный цикл потока:
- новый
- Runnable
- Бег
- Не работает (заблокировано)
- Отменено
ПРИМЕЧАНИЕ. Для справки и лучшего понимания внимательно просмотрите изображение ниже.
# 2 - Как создаются темы?
Теперь это самый важный и первый пункт, с помощью которого мы можем создать поток. Существует два способа создания потоков, которые обсуждаются ниже:
- Расширяя класс Thread
- Реализуя интерфейс Runnable
НОТА:
При создании нового потока выполняются следующие задачи:
- В новом стеке вызовов будет создан поток.
- Поток меняет свое состояние с Нового на Runnable.
- Когда поток будет запущен, он найдет метод run () и затем выполнится.
ПРИМЕР:
By extending Thread class
class MyThread extends Thread
(
public void run()
(
System.out.println("thread is running…");
)
public static void main(String args())
(
MyThread t1=new MyThread ();
t1.start();
)
)
ПРИМЕР:By implementing Runnable interface
class MyThread implements Runnable
(
public void run()
(
System.out.println("thread is running…");
)
public static void main(String args())
(
MyThread m1=new MyThread ();
Thread t1 =new Thread(m1);
t1.start();
)
)
ПРИМЕЧАНИЕ. Обратите внимание на разницу в приведенных выше двух примерах. Основное различие в приведенных выше двух примерах заключается в том, что если мы не расширяем Thread, а пытаемся создать Thread, реализуя интерфейс Runnable и классом метода start () для запуска Thread, то Tread не будет создан в новом стеке вызовов. поскольку это не будет идентифицировано как Поток.
Таким образом, чтобы идентифицировать его как Thread, мы должны передать экземпляр класса, в котором мы реализовали интерфейс Runnable, в качестве аргумента для конструктора класса Thread, а затем мы должны вызвать метод start ().
Планирование в потоке:
Поскольку все они знают, что расписание означает выполнение плана задачи в определенное время.
Планирование потоков - это аналогичный механизм планирования определенного потока, который поддерживает некоторые протоколы. Есть два разных способа планирования потоков в Java.
- Упреждающее планирование
- Время нарезки.
Упреждающее планирование:
JMV решает задачу с наивысшим приоритетом и начинает выполнение до тех пор, пока не войдет в состояние ожидания или ожидания или пока не появится задача с более высоким приоритетом.
Время нарезки:
JVM начинает выполнение определенного потока в течение определенного периода времени, а затем перемещает тот же поток в пул и выбирает другой поток на основе приоритета и других факторов для выполнения. Этот процесс продолжается до тех пор, пока весь поток не завершит свой процесс.
Теперь, если вы ищете работу, связанную с многопоточностью Java, то вам необходимо подготовиться к Вопросам по интервью Java 2018 по многопоточности. Это правда, что каждое собеседование отличается в зависимости от профилей работы. Здесь мы подготовили важные вопросы для интервью на Java и ответы по многопоточности, которые помогут вам добиться успеха в вашем интервью.
В этой статье 2018 «Вопросы интервью Java по многопоточности» мы представим 10 наиболее важных и часто задаваемых вопросов по интервью Java по многопоточности. Эти вопросы интервью делятся на две части:
Часть 1 - Java Интервью Вопросы по многопоточности (Basic)
Эта первая часть охватывает основные вопросы интервью Java и ответы по многопоточности.
Q1. Различить процесс и поток?
Ответ:
Процесс - это программа или приложение, тогда как Thread - это отдельная задача, которая должна быть выполнена внутри процесса. Нить легкая, а процесс тяжелый. Поток требует меньше, тогда как Процесс требует больше ресурсов, поэтому его называют тяжелым по своей природе.
Q2. Различить пользовательский поток и поток демона?
Ответ:
Поток, созданный в Java, называется пользовательским потоком. Поток Демона всегда работает в фоновом режиме, и его полный жизненный цикл зависит от основного потока. Поток демона, работающий в фоновом режиме, не помешает JVM завершить его. Дочерний поток, созданный из потока демона, также будет потоком демона.
Давайте перейдем к следующему Java-интервью по вопросам многопоточности.
Q3. Другой способ создания потока в Java?
Ответ:
Потоки в Java могут быть созданы двумя способами:
- Расширяя класс потока.
- Благодаря реализации Runnable Interface.
Q4. Каков жизненный цикл Нити?
Ответ:
Это общие вопросы интервью Java о многопоточности, задаваемые в интервью. Ниже приводится жизненный цикл потока:
- новый
- Runnable.
- Бег.
- Заблокированные.
- Отменено.
Q5. Что произойдет, если мы вызовем метод run () класса Thread?
Ответ:
Непосредственный вызов метода run () скомпилирует и выполнит программу успешно, но та же программа не будет обрабатываться как Thread, поскольку новый стек вызовов не будет создан, и программа начнет свое выполнение в том же стеке вызовов, где выполняется main.
Для создания потока, который должен работать с новым стеком вызовов, нужно использовать метод start () класса Thread.
Часть 2 - вопросы интервью Java по многопоточности (продвинутый уровень)
Теперь давайте взглянем на расширенные вопросы и ответы по Java для многопоточности.
Q6. Можем ли мы приостановить выполнение потока в определенное время?
Ответ:
Да, это может быть достигнуто в Java, вызывая sleep () класса Thread. Метод Sleep () также принимает аргумент, который указывает время в миллисекундах.
Q7. Как мы можем добиться планирования потока в Java?
Ответ:
Да, планирование потоков в Java возможно. Потоки в Java могут быть запланированы двумя способами, т.е. нарезкой по времени и упреждающим планированием.
Давайте перейдем к следующему Java-интервью по вопросам многопоточности.
Q8. Можно ли запустить тему дважды?
Ответ:
Нет, поток не может быть запущен дважды. Если мы попытаемся запустить поток дважды, он выдаст «java.lang.IllegalThreadStateException».
Q9. Что такое отключение хука в Java?
Ответ:
Это самые популярные вопросы интервью Java о многопоточности, задаваемые в интервью. Хук отключения - это механизм, который используется для очистки ресурсов, когда JVM выключается нормально или внезапно.
В10. Что является летучим?
Ответ:
Volatile - это ключевое слово в Java, и его можно использовать с переменными. Если переменная объявлена как volatile, все потоки будут считывать значение одной и той же переменной из основной памяти, а не из кэша, таким образом, это предотвращает чтение ошибок, когда несколько потоков используют одну и ту же переменную в своих операциях.
Рекомендуемые статьи
Это было руководство к списку вопросов интервью Java и ответов по многопоточности, чтобы кандидат мог легко разобрать эти вопросы интервью Java по многопоточности. Здесь, в этом посте, мы изучили лучшие вопросы Java-интервью по многопоточности, которые часто задают в интервью. Вы также можете посмотреть следующие статьи, чтобы узнать больше -
- Структура данных Java Интервью Вопросы
- Упс Java вопросы интервью
- Многопоточность Интервью Вопросы на Java
- Вопросы по тестированию Java