Introdução ao Java Multi-threading Interview Questions and Answers

Atualmente, o Java está em alta devido à sua plataforma independente. Pode ser executado em qualquer lugar e, portanto, está sendo amplamente utilizado com diferentes tecnologias futuras. Para estar preparado para isso, o multi-threading é um tópico importante focado nas entrevistas. Então, você finalmente encontrou o emprego dos seus sonhos no Java Multi-threading, mas está se perguntando como quebrar a entrevista e qual poderia ser o provável Java Multi-threading. Questões de entrevista. Cada entrevista é diferente e o escopo de um trabalho também é diferente. Vamos passar por algumas perguntas importantes da entrevista do Java Multi-threading que podem ser feitas nas entrevistas do Java Multi-threading que você procuraria.

Abaixo, estão as principais perguntas e respostas da entrevista sobre Java Multi-threading

1.O que é Thread em JAVA e como você o implementa?

Responda:
Um encadeamento ajuda a facilitar tarefas múltiplas e multiprocessamento dentro de um programa. Utiliza CPU de maneira eficaz e ajuda a melhorar o desempenho do aplicativo. Java permite que o usuário use vários encadeamentos por vez. Pode ser executado em paralelo com outros programas sem interrupções. Isso ajuda a reduzir o tempo para o processo. Por exemplo, se um programa leva 60 segundos para ser executado, podemos usar 6 threads que fornecerão o resultado em 10 segundos.

Java fornece duas maneiras de implementar o encadeamento em um programa. interface java.lang.Runnable possui uma instância java.lang.A thread que requer que uma tarefa seja executada por meio de uma instância. A classe Thread já implementa Runnable, para que um usuário possa substituir diretamente o método run () estendendo a classe Thread ou implementando a interface Runnable.

2.Quando usar o Runnable e quando usar o Thread em Java?

Responda:
Java não suporta múltiplas heranças de uma classe, mas permite implementar várias interfaces ao mesmo tempo. Portanto, será melhor implementar Runnable do que estender a classe Thread.

3. Como você diferencia entre um thread e um processo?

Responda:
Um encadeamento é um subconjunto de um processo. Um processo pode ter vários threads em execução para ele. Threads podem executar qualquer parte de um processo. Um processo tem seu próprio endereço onde é armazenado, enquanto o thread compartilha o endereço do processo que o criou. Criar um processo é um processo agitado, enquanto os threads podem ser criados facilmente. Um encadeamento é geralmente referido como um processo leve. A comunicação entre processos é difícil, enquanto os encadeamentos podem se comunicar facilmente usando os métodos Java de wait () e notify (). Os processos são independentes, portanto, qualquer alteração feita no processo não afeta os processos filhos. Pelo contrário, se forem feitas alterações em um encadeamento, há possibilidades de que outros encadeamentos sejam afetados.

4. Por que se diz que o comportamento do thread é imprevisível?

Responda:
A razão para isso é o agendador de threads que lida com a execução de threads. O agendador pode ter um desempenho diferente em plataformas diferentes Windows, UNIX, LINUX, etc. Ao executar o mesmo encadeamento, pode haver saídas diferentes em plataformas diferentes e, às vezes, até na mesma plataforma. Para resolver isso, um usuário pode criar o mesmo objeto Runnable, criar loops run () nos dois threads e iniciar os dois juntos. Idealmente, o planejador deve escolher os dois segmentos juntos e o desempenho não deve ser afetado, mas os dois segmentos inserem loops anonimamente.

5. O que é uma variável volátil em Java e qual é o seu significado?

Responda:
Java facilita o usuário a compartilhar variáveis ​​presentes em diferentes threads. Uma variável volátil atua como um modificador especial que pode ser usado apenas para variáveis ​​de instância. Como essa variável é compartilhada, haveria alterações consistentes com ela. O encadeamento deve garantir que ele tenha acesso exclusivo a essas variáveis ​​e um bloqueio seja necessário para exclusão mútua de variáveis ​​compartilhadas. Ele garante que uma gravação ocorra antes de qualquer leitura conseqüente. O modelo de memória Java garante a consistência dessa variável. Os métodos voláteis não podem estar lá, pois podem ser usados ​​apenas na forma de variáveis.

6. Qual é o uso da palavra-chave sincronizada? Qual é a diferença entre palavras-chave sincronizadas e voláteis?

Responda:
A palavra-chave sincronizada é usada quando o objetivo é executar apenas um encadeamento por vez em uma seção apropriada do código. Pode ser usado para mostrar quatro tipos de blocos diferentes, como abaixo:

1) métodos de instância
2) métodos estáticos
3) Blocos de código dentro dos métodos da instância
4) Blocos de código dentro de métodos estáticos

Pode ser declarado como:

Exemplo de nulo sincronizado público () ()

A diferença entre as palavras-chave volátil e sincronizada é que a sincronização pode ser usada com variáveis ​​e métodos, enquanto a volátil não pode ser usada com métodos. Variáveis ​​voláteis não são armazenadas na memória cache, variáveis ​​sincronizadas são armazenadas na memória cache. Uma variável volátil nunca chegará a um impasse, pois não exige a obtenção de nenhum bloqueio. Enquanto estiver em variáveis ​​sincronizadas, se elas não forem feitas corretamente, pode acabar em um impasse.

7. Por que métodos como wait (), notify () e notify all () estão presentes na classe de objeto e não na classe Thread?

Responda:
A classe Object possui monitores que permitem que o thread bloqueie um objeto, enquanto o Thread não possui nenhum monitor. Quando qualquer um dos métodos acima é chamado, aguarda que outro encadeamento libere o objeto e notifica o monitor chamando notify () ou notifica all (). Quando o método notify () é chamado, ele faz o trabalho de notificar todos os threads que aguardam a liberação do objeto. O monitor da classe de objeto verifica se o objeto está disponível ou não. A classe de encadeamento que possui esses métodos não ajudaria, pois existem vários encadeamentos em um objeto e não vice-versa.

8. Explique a diferença entre os métodos sleep () e wait ().

Responda:
1) O método sleep () é chamado em threads e não em objetos. O método Wait () é chamado nos objetos.
2) Quando o método wait () é chamado, o monitor move o thread do estado de execução para o estado de espera. Depois que um encadeamento está em espera (), ele pode passar para executável apenas quando notificar () ou notificar (()) para esse objeto. O planejador altera o estado após isso. Enquanto estiver no método sleep (), o estado é alterado para aguardar e retornará ao modo de execução somente depois que o tempo de suspensão terminar.
3) O método Wait () faz parte da classe java.lang.Object, enquanto sleep () faz parte da classe java.lang.Thread.
4) Wait () é sempre usado com um bloco sincronizado, pois requer o bloqueio de um objeto enquanto sleep () pode ser usado a partir do bloco sincronizado externo.

9. Como forçar o início de um encadeamento em Java?

Responda:
Em Java, o multithreading não pode forçar o início de um encadeamento. Somente o planejador de encadeamentos pode controlar os encadeamentos e eles não são expostos a nenhuma API para controle.

10. O thread deixa o objeto bloqueado quando os métodos wait () e sleep () são chamados?

Responda:
Quando um encadeamento está no método sleep (), ele não deixa o bloqueio e passa para o estado de espera. O encadeamento aguarda a hora de dormir terminar. Quando o método wait () é usado, o thread deixa o objeto bloqueado e passa para o estado de espera. Depois que o notify () é chamado, ele volta ao estado de execução e adquire o bloqueio.

Artigo recomendado

Este foi um guia para a lista de perguntas e respostas da entrevista com multiencadeamento Java, para que o candidato possa reprimir essas perguntas da entrevista com multiencadeamento Java facilmente. Você também pode consultar os seguintes artigos para saber mais -

  1. Perguntas da entrevista para desenvolvedores Java - Como rachar as 7 principais perguntas
  2. Guia Completo para Desenvolvimento de Aplicativos Java (Awesome Theory)
  3. Maven Entrevista Perguntas e Respostas | Top e mais solicitadas
  4. 10 perguntas avançadas da entrevista do AngularJS para