As 40 principais perguntas e respostas da entrevista multithreading (2025)

Principais perguntas da entrevista sobre Java Multithreading

Aqui estão as perguntas da entrevista multithreading, perguntas e respostas da entrevista para calouros e também para candidatos experientes para conseguir o emprego dos sonhos.


1) O que é um tópico?

Um Thread é uma unidade de execução simultânea. Podemos dizer que faz parte do processo que pode facilmente ser executado simultaneamente com outras partes do processo.

Download gratuito de PDF: Perguntas e respostas da entrevista multithreading


2) O que é multithreading?

multithreading em Java é um processo de execução de dois ou mais threads simultaneamente para utilização máxima da CPU.

A principal vantagem é:

  • Threads compartilham o mesmo espaço de endereço
  • O fio permanece leve
  • O custo da comunicação entre threads é baixo.

3) Quais são os estados associados ao thread?

  • Pronto
  • Corrida
  • Esperando
  • Estado morto

4) Discutir um ciclo de vida de thread?

O ciclo de vida de um thread é semelhante ao ciclo de vida dos processos executados em um sistema operativo. Durante seu ciclo de vida, o thread pode passar de um estado para outro. Porém, depende da operação realizada nele.


5) Quais são os estados do thread?

A seguir estão os diferentes estados do thread:

Novo: Um thread que acabou de ser instanciado está no novo estado. Quando um método start() é invocado, o thread fica no estado pronto. Em seguida, ele é movido para o estado executável pelo agendador de threads.

  • Executável: Um thread que está pronto para ser executado
  • Corrida: Um thread que está em execução está em estado de execução.
  • Bloqueado: Um thread bloqueado está aguardando um bloqueio de monitor neste estado. Isso também pode acontecer quando um thread executa uma operação de E/S e passa para o próximo estado.
  • Esperando: É um thread que está aguardando que outro thread execute uma ação específica.
  • Espera_temporizada: É um thread que está aguardando a execução de outro thread.
  • Rescindido: Um thread que saiu está neste estado.
Perguntas da entrevista multithreading
Perguntas da entrevista multithreading

6) Quais são as principais diferenças entre Thread e Processo?

O thread é um subconjunto do processo. O processo pode conter vários threads. O processo pode ser executado em diferentes espaços de memória, mas todos os threads compartilham o mesmo espaço de memória.


7) O que é impasse?

Deadlock é uma situação em que um thread está aguardando um bloqueio de objeto, que é adquirido por outro thread e o segundo thread também aguarda um bloqueio de objeto que é adquirido pelo primeiro thread. Como ambos os threads estão aguardando a liberação um do outro, essa condição é chamada de deadlock.


8) O que é LiveLock?

Livelock ocorre quando todos os threads estão bloqueados e não podem ser executados devido à indisponibilidade dos recursos necessários e à inexistência de qualquer thread desbloqueado.

Livelock pode ocorrer nas seguintes condições:

  • Quando todos os threads de um programa são executados em um objeto com zero parâmetros. O programa é bloqueado ao vivo e nunca é processado até que um ou mais threads chamem Object.notify() ou Object.notifyAll() nos objetos relevantes.
  • Livelock também acontece quando todos os threads de um programa ficam presos em loops infinitos.
Perguntas da entrevista multithreading
multithreading

9) O que é um monitor?

  • O monitor é um corpo de código que pode ser executado por apenas um thread por vez.
  • Se qualquer outro thread tentar obter acesso ao mesmo tempo, ele será suspenso até que o thread atual libere o Monitor.

10) O que você quer dizer com fome de fios?

Na situação em que um thread não possui CPU suficiente para sua execução, ocorre a privação de thread.

No entanto, isso pode acontecer nos seguintes cenários

  • Threads de baixa prioridade receberão menos CPU em comparação com threads de alta prioridade. Thread de prioridade mais baixa pode morrer de fome esperando obter mais espaço de CPU para realizar cálculos.
  • O thread pode estar aguardando indefinidamente por um bloqueio no monitor do objeto, mas notify() pode estar despertando repetidamente alguns outros threads. Nesse caso, o fio também morre de fome.

11) Qual é o significado de giro ocupado em multithreading?

Spin ocupado é uma técnica que os programadores simultâneos empregam para fazer um thread esperar em determinadas condições. Isso é bem diferente dos métodos tradicionais como wait() e sleep(), que envolvem a renúncia ao controle da CPU. Este método não requer o abandono da CPU; em vez disso, apenas executa o loop vazio.


12) O que é mudança de contexto em multithreading?

É o processo de armazenamento e restauração do estado da CPU. Isso ajuda a currículo execução do thread do mesmo ponto em um momento posterior. É um dos recursos essenciais para sistema operacional multitarefa e suporte para ambiente multithread.


13) Por que o comportamento do Thread é imprevisível?

Podemos dizer que o comportamento do thread é imprevisível porque a execução dos Threads depende do escalonador do Thread. Deve-se lembrar que cada agendador de threads possui uma implementação diferente em diferentes plataformas como Windows, Unix, etc.


14) Como você pode pausar a execução de uma Thread por um determinado período de tempo?

O método sleep () é usado para pausar a execução do thread por um determinado período de tempo. No entanto, isso não interromperá o processamento do thread por um período específico. No entanto, quando o thread acordar do sono, seu estado muda para executável e com base no agendamento do thread, ele será executado.


15) Quais são as inúmeras maneiras pelas quais um thread pode entrar no estado de espera?

Um thread pode entrar no estado de espera das seguintes maneiras

  • Usando o método sleep()
  • Bloqueio em E/S
  • Tentativa sem sucesso de adquirir o bloqueio de um objeto
  • Invocando o método wait() de um objeto

16) O que acontece se não substituirmos um método run?

Em Java, quando chamamos o método start() em um thread, ele chama internamente o método run() com o thread recém-criado. Portanto, se não substituirmos o método run(), o thread recém-criado não será chamado, então nada acontecerá.
Exemplo:

class MyThread extends Thread {

//don't override run() method

}
public class DontOverrideRun {

public static void main(String[] args) {

System.out.println("main has started.");

MyThread thread1=new MyThread();

thread1.start();

System.out.println("main has ended.");
}

}

17) Qual é a principal diferença entre os métodos Thread.start() e Thread?run()?

O método Thread.start() (método nativo) da classe Thread faz o trabalho de executar o método Thread.A run() em um thread. Portanto, se chamarmos diretamente Thread.O método run() também será executado no mesmo thread. Assim nunca resolverá o propósito de criar um novo tópico.


18) Como criar um thread em java?

Existem dois métodos para criar um thread em java.

  • Primeiro implementando a interface Runnable e depois criando um objeto de thread a partir dela.
  • O segundo método é estender a classe de thread.

19) Qual é o significado de Prioridade de Thread?

Cada thread tem uma prioridade. No entanto, uma prioridade mais alta também tem precedência na execução. No entanto, também depende da implementação do Thread Scheduler, que depende do sistema operacional. É possível alterar a prioridade do thread, mas isso não garante que o thread de prioridade mais alta será executado primeiro.


20) O que o método join() faz?

O método join() espera que um thread morra. Ele força todos os threads em execução a parar de executar até o momento em que o thread se junta para concluir seu trabalho.


21) O que é Java Shutdown Hook?

O gancho de desligamento Java é usado para limpar recursos quando a JVM é encerrada. Recursos limpos significam fechar o arquivo de log, enviar alguns alertas ou qualquer outra coisa. O gancho de desligamento precisa ser usado para executar o código antes do encerramento da JVM.


22) Quais são os dois principais usos de volátil em Java?

Threads podem armazenar os valores de variáveis ​​na memória local. Se uma variável for marcada como volátil, toda vez que a mesma variável for usada, ela deverá ser lida na memória principal.

Da mesma forma, toda vez que a variável é escrita, o valor deve ser armazenado na memória principal.


23) Como você pode compartilhar dados entre dois threads em Java?

Podemos obter dados entre threads usando um objeto compartilhado ou simultâneo estrutura de dados como BlockingQueue. Ele implementa um padrão produtor-consumidor usando métodos de espera e notificação. Também envolve o compartilhamento de objetos entre dois threads.


24) Como vários threads podem ser controlados simultaneamente?

Vários threads podem ser controlados simultaneamente se forem criados em um objeto ThreadGroup.


25) O que é um método de bloqueio em Java?

Em Java, o método de bloqueio é um método que bloqueia até que a tarefa seja concluída. Por exemplo, o método accept () de ServerSocket bloqueia até o momento em que um cliente está conectado. Aqui, bloqueio refere-se a qualquer coisa cujo controle não retornará ao chamador até que a tarefa termine.


26) Qual é a principal diferença entre o método wait () e sleep ()?

Espere() Dorme()
Este método é definido na classe Object O método é definido na classe Thread
O método Wait() libera o bloqueio Este método nunca libera o bloqueio.

27) O que é um objeto imutável? Como isso pode ajudar na escrita de um aplicativo simultâneo?

Qualquer objeto pode ser considerado incontestável se seu estado não mudar após ser construído. Objetos imutáveis ​​são usados ​​na criação de aplicativos simples, confiáveis ​​e simultâneos.

Para criar objetos imutáveis, é importante tornar a classe e seu membro finais para que, uma vez criados os objetos, seu estado não seja modificado.


28) Diga-me a diferença entre ceder e dormir?

Quando uma tarefa invoca seu método yield(), ela retorna ao estado pronto.

Quando uma tarefa invoca seu método sleep(), ela retorna ao estado de espera.


29) O que é ThreadPool?

ThreadPool é um conjunto de threads que reutiliza um número fixo de threads para executar uma tarefa específica.


30) Qual é o uso da palavra-chave Synchronized?

A palavra-chave sincronizada pode ser aplicada ao método estático ou não estático. Usando Synchronized, apenas um thread pode acessar métodos sincronizados. Porém, na situação em que existem vários threads tentando acessar o mesmo método. Nesse momento, outros threads terão que aguardar o thread de execução. Ele também fornece um bloqueio no objeto para evitar uma condição de corrida.

public void synchronized method1(){}

public void synchronized staticmethod1(){}

public void myMethod(){

synchronized (this){

//synchronized keyword on block of code

}

}

31) O que é uma palavra-chave volátil?

A palavra-chave volátil é um qualificador que é aplicado a uma variável quando ela é declarada. Ele informa ao compilador que o valor da variável pode mudar a qualquer momento – sem que nenhuma ação seja executada pelo código.


32) Quais são as principais diferenças entre notificar e notificarAll em Java?

O método Notify() não fornece nenhuma maneira de escolher um thread específico, por isso só é útil quando um único While notifyAll() envia uma notificação para todos os threads. Também lhes permite competir por bloqueios. Também garante que pelo menos um thread prosseguirá.


33) Qual parâmetro JVM é usado para controlar o tamanho da pilha de um thread?

Para controlar o tamanho da pilha de Thread em Java, o parâmetro Xss é usado.


34) Você pode iniciar um thread duas vezes em Java?

Não, depois que um thread é iniciado, ele não pode ser iniciado pela segunda vez.


35) Qual é o propósito de usar o método yield da classe thread?

O método Yield é a maneira mais simples de solicitar que o thread atual abandone a CPU para outro thread. É um método estático e apenas garante que o thread atual abandonará a CPU, mas não informa nada sobre qual outro thread também impacta a CPU.


36) Quando podemos dizer que threads não são processos leves em java?

Threads não são processos leves quando threads do mesmo processo estão sendo executados simultaneamente. Porém, se threads de processos diferentes estiverem sendo executados simultaneamente naquele momento, os threads se tornarão um processo pesado.


37) É possível sincronizar o construtor de uma classe Java?

Como Java Standard, os construtores não podem ser sincronizados porque outros threads não podem ver o objeto antes que o processo de criação do thread termine. Não há necessidade de o construtor Java Objects ser sincronizado, pois isso bloquearia o objeto que está sendo construído.


38) O que é variável transitória?

Uma variável transitória é uma variável que não pode ser serializada durante a serialização. Ele é inicializado com seu valor padrão durante a serialização.

Essas perguntas da entrevista também ajudarão em sua viva (oral)

Compartilhar

4 Comentários

  1. Avatar treinamento java diz:

    Olá eu
    isso realmente me ajuda. durante a preparação da entrevista.
    É realmente louvável escrever este artigo e fornecer essas informações.
    Eu sou recomendável

  2. Avatar Shwethashree Venkatesh diz:

    5) Quais são os estados do thread?
    Executável não está no estado Em execução. Está pronto para ser executado

    1. Atualizada! Obrigado por apontar isso

    2. Avatar Amuda Adeolu Badmus diz:

      1. Os estados executáveis ​​são vistos como uma bicamada no nível do sistema operacional

      2.Quase todas as linguagens de programação veem o thread como executável ou NÃO.

      3.Um thread executável pode estar no estado (pronto ou em execução).

      4.Você pode ter dois threads em estados executáveis, mas apenas um thread existirá no estado “em execução”,
      enquanto o segundo thread existe em um estado “em execução”.

Deixa um comentário

O seu endereço de e-mail não será publicado. Os campos obrigatórios são marcados com *