Prévia do material em texto
Você acertou 10 de 10 questões Verifique o seu desempenho e continue treinando! Você pode refazer o exercício quantas vezes quiser. Verificar Desempenho 1 Marcar para revisão �COPESE � UFPI � Analista de Tecnologia da Informação - 2017� �Questão modificada) Sobre a classe thread da linguagem Java, informe se cada afirmativa a seguir é verdadeira �V) ou falsa �F�. Em seguida, marque a opção que corresponde à sequência correta. ( ) A classe provê diversos métodos para controle de execução de threads, sendo o método start responsável por iniciar a execução do thread. ( ) O método sleep é utilizado para forçar um método a atrasar sua execução até que o método run de outra thread tenha completado sua execução. ( ) O método yield, que não possui parâmetros, é um pedido do thread em execução para entregar o processador voluntariamente. A B C D E F � V � V V � V � F F � F � V V � F � F V � F � V Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado A sequência correta é V � F � V. A primeira afirmação é verdadeira, pois a classe Thread realmente provê diversos métodos para controle de execução de threads, sendo o método start responsável por iniciar a execução do thread. A segunda afirmação é falsa, pois o método sleep é utilizado para fazer a thread atual dormir (temporariamente parar a execução) pelo número de milissegundos especificado no argumento, e não para forçar um método a atrasar sua execução até que o método run de outra thread tenha completado sua execução. A terceira afirmação é verdadeira, pois o método yield, que não possui parâmetros, é um pedido do thread em execução para entregar o processador voluntariamente. A B C D E 2 Marcar para revisão �AOCP � BRDE � Analista de Sistemas - 2012� Sobre Prioridade e Agendamento de Thread na linguagem de programação Java, analise as afirmações e assinale a(s) correta(s). I. Por padrão, toda thread recebe uma DEFAULT_PRIORITY (uma constante de 5�. II. Toda thread do Java tem uma prioridade de thread que auxilia na ordenação em que estão agendadas. III. O agendamento de thread consegue garantir que, em diferentes sistemas operacionais, cada processo gastará a mesma fatia de tempo. IV. Em Java, cada nova thread herda a prioridade da thread que a cria. Apenas I Apenas II e IV Apenas I, III e IV Apenas II, III e IV I, II, III e IV Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado A B C As afirmações II e IV estão corretas. A afirmação II é verdadeira porque, no Java, cada thread tem uma prioridade que auxilia na determinação da ordem em que as threads são agendadas. A afirmação IV também é verdadeira, pois, em Java, cada nova thread herda a prioridade da thread que a criou. No entanto, a afirmação I está incorreta, pois a prioridade padrão de uma thread em Java não é necessariamente uma constante de 5. A afirmação III também está incorreta, pois o agendamento de thread não garante que cada processo gastará a mesma fatia de tempo em diferentes sistemas operacionais. Portanto, a alternativa correta é a B� "Apenas II e IV". 3 Marcar para revisão �CESGRANRIO � BNDES � Profissional Básico - Análise de Sistemas - 2013� Qual método pertencente à biblioteca nativa de Java não é capaz de bloquear a execução de uma thread? Object.wait() ReentrantLock.lock() Thread.join() D E FileInputStream.read() Thread.yield() Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado O método Thread.yield() é o único entre as opções que não bloqueia a execução de uma thread. Este método é usado para indicar que a thread atual está disposta a ceder seu uso atual do processador, permitindo que outras threads sejam executadas. No entanto, não há garantia de que o uso do processador será realmente cedido. Os métodos Object.wait(), ReentrantLock.lock(), Thread.join() e FileInputStream.read() podem bloquear a execução de uma thread. 4 Marcar para revisão �CESGRANRIO � BNDES � Profissional Básico - Análise de Sistemas - 2011� Os usuários de um sistema Web, desenvolvido em Java, reclamam de erros nos dados consultados. A equipe técnica, ao analisar a situação, concluiu que determinado método M está sendo invocado, simultaneamente, por diferentes threads. Considerando que não há manipulação de locks no restante do sistema, o que pode ser A B C D E feito para que M seja executado, em dado momento, somente por uma thread? Ajustar o firewall de borda para permitir uma conexão por IP. Implementar connection pooling no acesso ao banco de dados. Utilizar a keyword lockable no bloco de M. Declarar o método M como synchronized. Reescrever M em Assembly, necessariamente. Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado Na linguagem de programação Java, quando múltiplas threads acessam um método simultaneamente, pode ocorrer uma condição de corrida, que pode levar a resultados inesperados ou erros. Para evitar isso, podemos usar a palavra-chave 'synchronized' ao declarar um método. Isso garante que, em um dado momento, apenas uma thread possa executar o método. Portanto, a alternativa correta é 'Declarar o método M como synchronized'. A B C D E 5 Marcar para revisão �VUNESP � TJ/SP � Analista de Sistemas - 2012� Considere as seguintes afirmações sobre Threads: I. É uma forma de um processo se dividir em tarefas que podem ser executadas concorrentemente. II. Os sistemas que suportam múltiplas threads são chamados de multithread. III. Em hardwares com múltiplas CPUs (multi- core), as threads podem ser processadas de forma simultânea. Sobre as afirmações, está correto o contido em: I, apenas I e II, apenas I e III, apenas II e III, apenas I, II e III Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado Todas as afirmações estão corretas. A afirmação I está correta porque uma A B C thread é, de fato, uma forma de um processo se dividir em tarefas que podem ser executadas simultaneamente. A afirmação II também está correta, pois os sistemas que suportam múltiplas threads são conhecidos como sistemas multithread. Por fim, a afirmação III está correta, pois em hardwares com múltiplas CPUs (multi-core), as threads podem ser processadas simultaneamente. Portanto, as afirmações I, II e III estão corretas. 6 Marcar para revisão �UFJF � COPESE � Técnico de Tecnologia da Informação - 2017� Java possui suporte à definição de métodos synchronized, os quais: Permitem a sincronização com outros métodos synchronized da mesma classe, de modo que possam iniciar sua execução exatamente juntos a partir de diferentes threads. Permitem a sincronização com outros métodos synchronized da mesma e de outras classes, de modo que possam iniciar sua execução exatamente juntos a partir de diferentes threads. Habilitam o monitor de um objeto, que garante exclusão mútua entre threads que tentam executar seus métodos synchronized em um dado momento. D E Habilitam o uso do relógio de tempo real no objeto, que é sincronizado com o relógio atômico e que, assim, tem mais precisão se comparado com o relógio do sistema. Permitem monitorar sua execução para que outras ações no mesmo objeto possam ser sincronizadas para execução obrigatoriamente em paralelo. Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado O método synchronized em Java é utilizado para controlar o acesso a um bloco de código ou método por várias threads. Quando uma thread está executando um método synchronized, todas as outras threads que tentam executar qualquer método synchronized no mesmo objeto são bloqueadas até que a primeirathread termine sua execução. Isso é conhecido como exclusão mútua e é a principal característica dos métodos synchronized. Portanto, a alternativa correta é a C� "Habilitam o monitor de um objeto, que garante exclusão mútua entre threads que tentam executar seus métodos synchronized em um dado momento". A B C D E 7 Marcar para revisão No que se refere à linguagem de programação Java, ''thread safe'' é um conceito segundo o qual threads concorrentes utilizam algoritmo de sincronismo para cooperarem entre si. É exemplo da aplicação desse conceito: Objetos imutáveis Objetos finais Objetos estáticos Classes estáticas Classes finais Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado O conceito de ''thread safe'' na linguagem de programação Java é exemplificado por objetos imutáveis. Isso ocorre porque, em um ambiente multithread, os objetos imutáveis são seguros para serem usados por várias threads simultaneamente, sem a necessidade de sincronização, pois uma vez criados, seu estado não pode ser alterado. Portanto, não há risco de uma thread interferir na operação de outra. A B C D E Assim, a alternativa correta é a "A� Objetos imutáveis". 8 Marcar para revisão �UFF � COSEAC � Analista de Tecnologia da Informação - 2015� Na linguagem Java, uma thread executável pode entrar em um determinado estado por um intervalo de tempo específico, retornando ao estado executável quando for notificada por outra thread ou quando esse intervalo expirar. Essa situação caracteriza o seguinte estado: Cancelado Bloqueado Espera sincronizada Novo Terminado Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado O estado descrito no enunciado é conhecido como "Espera sincronizada". A B C Nesse estado, a thread executável entra em um intervalo de tempo específico e retorna ao estado executável quando é notificada por outra thread ou quando o intervalo de tempo expira. Isso é comum em situações onde uma thread precisa esperar por outra para completar uma tarefa antes de continuar. Portanto, a alternativa correta é a "C", que corresponde à "Espera sincronizada". 9 Marcar para revisão Em relação à criação e controle de threads na linguagem Java, assinale a opção correta. O método run() de uma thread inicia a execução concorrente do thread quando chamado diretamente. A interface Runnable permite definir threads, mas não pode ser usada com a classe Thread. O método sleep() faz com que o thread atual pause sua execução por um tempo determinado, mas ele pode lançar a exceção InterruptedException. D E Após um thread entrar no estado "terminated", ele pode ser reiniciado chamando novamente o método start(). O método interrupt() encerra imediatamente a execução de um thread, mesmo que ele esteja executando uma tarefa crítica. Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado Letra A � Incorreta Chamar run() diretamente não inicia a execução concorrente, apenas executa o método como uma chamada normal. Para execução em paralelo, é necessário chamar start(), que internamente chama run() em uma nova thread. Letra B � Incorreta A interface Runnable pode sim ser usada com a classe Thread. Basta passar uma instância de Runnable para o construtor da Thread. Letra C � Correta O método Thread.sleep(milliseconds) pausa o thread atual pelo tempo indicado e lança InterruptedException caso o thread seja interrompido durante o sono. Letra D � Incorreta Um thread não pode ser reiniciado após terminar. Tentar chamar start() novamente em um thread que já terminou resulta em uma IllegalThreadStateException. A B C D E Letra E � Incorreta O método interrupt() não encerra imediatamente um thread. Ele apenas sinaliza a interrupção. O thread precisa verificar esse sinal e tratar a interrupção adequadamente. 10 Marcar para revisão Em Java, quando uma thread está aguardando para obter a trava de um semáforo, ela encontra-se no estado: RUNNABLE BLOCKED WAITING TIMED_WAITING STOPPED Resposta correta Parabéns, você selecionou a alternativa correta. Confira o gabarito comentado! Gabarito Comentado Em Java, quando uma thread está aguardando para obter a trava de um semáforo, ela se encontra no estado "BLOCKED". Isso significa que a thread Questão 4 de 10 Corretas �10� Em branco �0� 1 2 3 4 5 6 7 8 9 10 Lista de exercícios Programaç… Sair está bloqueada, aguardando a liberação de um recurso para continuar sua execução. Portanto, a alternativa correta é a letra B, que indica o estado "BLOCKED".