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

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


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.

🚀 Desbloqueie a explicação completa

Veja comentários detalhados e resoluções exclusivas para entender o gabarito desta questão.

  • Marcos de Castro
    Marcos de Castro
    31/12/1969 • 21: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.
🔒
Conteúdo restrito

Cadastre-se para visualizar comentários e resoluções.

Criar conta grátis

Utilizamos cookies e tecnologias semelhantes para aprimorar sua experiência. Política de Privacidade.