Geral
Programação Orientada a Objetos COM230
Semana 6
0

Questão

Com a disponibilidade de GPUs e CPUs multi-core, os aplicativos estão se tornando cada vez mais complexos à medida que os desenvolvedores aproveitam as threads para o máximo desempenho e capacidade de resposta do aplicativo. Com essa maior complexidade vem um maior grau de dificuldade ao escrever código, depurar, testar e gerenciar os aplicativos. Sendo assim, “escrever programas de múltiplas threads pode ser difícil. Embora a mente humana possa realizar funções simultaneamente, as pessoas acham difícil alternar entre linhas de pensamento paralelas. Para ver por que programas de múltiplas threads podem ser difíceis de escrever e de entender, tente a seguinte experiência: abra três livros na página 1 e tente ler os livros concorrentemente. Leia algumas palavras do primeiro livro, então algumas do segundo, então algumas do terceiro, então volte ao início e leia as próximas palavras do primeiro livro etc. Depois dessa experiência, você apreciará os desafios da tecnologia multithreading– alternar entre os livros, ler brevemente, lembrar-se de onde parou em cada livro, aproximar ainda mais o livro que está lendo para poder vê-lo melhor e afastar os que não está lendo – e, no meio de todo esse caos, tentar compreender o conteúdo dos livros” (DEITEL; DEITEL, 2016, p. 749).

DEITEL, P.; DEITEL, H. Java: como programar. 10. ed. São Paulo: Pearson Education do Brasil, 2016.

Avalie as afirmações a seguir, sobre os estados e as descrições relacionadas a threads em Java, e correlacione-as, adequadamente, aos termos aos quais se referem.


1. Novo

2. Executando

3. Bloqueado

4. Terminado


I. Uma thread está nesse estado quando recebe tempo de CPU pela primeira vez, realizando execução e registro do processo.

II. Esse estado associa-se a uma tarefa que precisa de um recurso ou tem menor prioridade que outra, não podendo ser concluída imediatamente.

III. Esse estado é ativo quando o método start() é iniciado, quando recursos iniciais já foram alocados à thread.

IV. Quando o método run() chega ao fim de sua execução, esse estado é chamado para a thread em questão.


Assinale a alternativa que correlaciona, adequadamente, os dois grupos de informação.

A)

1-II; 2-III; 3-II; 4-IV.

B)

1-I; 2-II; 3-III; 4-IV.

C)

1-I; 2-III; 3-II; 4-IV.

D)

1-I; 2-III; 3-IV; 4-II.

E)

1-II; 2-I; 3-IV; 4-III.

function vote(questaoId, value) { window.location.href = "/accounts/login/?next=/questao/3699/"; return; fetch(`/vote/questao/${questaoId}/`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': 'W23DmCmLGlhWHjL1O2YfxLbWrp8TnEUbR2cHtFkZzJgFDUV6rc7E0JO4XBVgkMZu' }, body: JSON.stringify({ value: value }) }) .then(response => response.json()) .then(data => { if (data.success) { document.getElementById(`score-${questaoId}`).textContent = data.score; const upBtn = document.querySelector(`button[onclick="vote(${questaoId}, 1)"]`); const downBtn = document.querySelector(`button[onclick="vote(${questaoId}, -1)"]`); upBtn.classList.remove('active-up'); downBtn.classList.remove('active-down'); if (data.user_vote === 1) upBtn.classList.add('active-up'); if (data.user_vote === -1) downBtn.classList.add('active-down'); } }); }