Prévia do material em texto
Questões Exercicio Programação Paralela Em Java: Threads Você acertou 4 de 10 questões Verifique o seu desempenho e continue treinando! Você pode refazer o exercício quantas vezes quiser. Verificar Desempenho A B C D E 1 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() FileInputStream.read() Thread.yield() Resposta incorreta Opa! A alternativa correta é a letra E. 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 A B C D E 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. 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 incorreta Opa! A alternativa correta é a letra B. Confira o gabarito comentado! Gabarito Comentado A B C D E 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 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 incorreta Opa! A alternativa correta é a letra A. Confira o gabarito comentado! Gabarito Comentado O conceito de ''thread safe'' na linguagem de programação Java é lifi d bj t i tá i I bi t A B C D E 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. Assim, a alternativa correta é a "A� Objetos imutáveis". 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 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 A B C D E 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'. 5 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. 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! A B C D E 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 primeira thread 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". 6 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. F � V � V V � V � F F � F � V V � F � F V � F � V A B C D E 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 pedidodo thread em execução para entregar o processador voluntariamente. 7 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 A B C D E 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 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". 8 Marcar para revisão �CESPE � INMETRO � Pesquisador � Ciência da Computação � 2010� Em relação ao uso de threads na linguagem Java, assinale a opção correta: O método yield é utilizado para forçar um thread a entrar no modo de suspensão. O método join é utilizado para garantir que determinado thread não seja executado até que outro tenha entrado no estado inativo. Uma classe pode definir tanto métodos quanto variáveis sincronizadas. Métodos static não podem ser synchronized. Todo thread recebe uma prioridade padrão que é igual ao menor nível de prioridade possível. Para configurar essa prioridade, pode ser utilizado o método setPriority. Resposta incorreta Opa! A alternativa correta é a letra B. Confira o gabarito comentado! A B C D E Gabarito Comentado A alternativa correta é a B. O método join em Java é utilizado para fazer com que um thread espere até que o thread no qual ele foi chamado termine sua execução. Isso significa que se o método join é chamado em um thread, a execução desse thread será pausada até que o thread no qual o join foi chamado termine. Portanto, o método join é utilizado para garantir que determinado thread não seja executado até que outro tenha entrado no estado inativo. 9 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 incorreta Opa! A alternativa correta é a letra E. Confira o gabarito comentado! A B C D E Gabarito Comentado Todas as afirmações estão corretas. A afirmação I está correta porque uma 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. 10 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 incorreta Opa! A alternativa correta é a letra C. Confira o gabarito comentado! Gabarito Comentado O estado descrito no enunciado é conhecido como "Espera sincronizada". 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".