Questões Informática Programação

Analise o código a seguir. 01.packageprocessos; 02. 03...

Responda: Analise o código a seguir. 01.packageprocessos; 02. 03.publicclassConcorrenciaimplementsRunnable{ 04. 05.Threadt; 06. 07.Concorrencia(St...


1Q30644 | Informática, Programação, Analista de Tecnologia da Informação, DATAPREV, QUADRIX

Analise o código a seguir.

01.  package processos;
02.
03.  public class Concorrencia implements Runnable{
04.   
05.       Thread t;
06.         
07.       Concorrencia(String str) {
08.           t = new Thread(this, str);
09.           t.start();
10.       }
11.         
12.       public void run() {
13.           for (int i = 0; i < 5; i++) {
14.               if ((i % 5) == 0) {
15.                   System.out.println(Thread.currentThread().getName() + " executando...");
16.                   Thread.yield();
17.               }
18.           }
19.             
20.           System.out.println(Thread.currentThread().getName() + " Fim da thread.");
21.       }
22.         
23.       public static void main(String []args){
24.          new Concorrencia("Thread 1");
25.          new Concorrencia("Thread 2");
26.          new Concorrencia("Thread 3");
27.       }
28.  }


De acordo com a análise do código, determine a alternativa que descreve, corretamente, a função do método yield(), na linha 16.
  1. ✂️
  2. ✂️
  3. ✂️
  4. ✂️
  5. ✂️

💬 Comentários

Confira os comentários sobre esta questão.
Marcos de Castro
Por Marcos de Castro em 31/12/1969 21:00:00
Gabarito: b) O método yield() em Java é utilizado para sugerir ao escalonador de threads que a thread atual está disposta a ceder seu tempo de processamento para outras threads de mesma prioridade.

No código apresentado, na linha 16, Thread.yield() é chamado dentro do método run(), o que faz com que a thread corrente pause momentaneamente, permitindo que outras threads possam ser executadas.

Isso não significa que a thread será pausada ou colocada em estado de sleep, mas sim que ela indica ao sistema que está pronta para ceder a vez para outras threads, podendo o escalonador decidir se troca ou não a execução.

As outras alternativas não correspondem à função do yield():
- a) não registra a thread no scheduler;
- c) não trata de sincronização;
- d) não atribui nome à thread;
- e) não coloca a thread em estado de sleep.

Portanto, a alternativa correta é a letra b.
⚠️ Clique para ver os comentários

Visualize os comentários desta questão clicando no botão abaixo

Ver comentários
Utilizamos cookies e tecnologias semelhantes para aprimorar sua experiência de navegação. Política de Privacidade.