SóProvas


ID
2983963
Banca
Aeronáutica
Órgão
CIAAR
Ano
2019
Provas
Disciplina
Programação
Assuntos

As threads possuem vários estados pelos quais elas podem passar. Na programação Java, para uma thread sair de um estado de bloqueio, uma destas ações a seguir, chamadas pela própria thread, precisam ocorrer uma chamada do método.

Na programação Java, para uma thread sair de um estado de bloqueio, chamada pela própria thread, precisa ocorrer uma chamada do método

Alternativas
Comentários
  • GABARITO: C

    O estado Non-Runnable

    Um thread passa a ser "Non-Runnable" quando um dos seguintes eventos ocorre:

    O método sleep() é chamado. O thread chama o método wait() que espera por uma condição. Veremos isso à frente

    O thread faz um system call "lento" tal como um system call que causa I/O. Também fala-se que o thread está "bloqueado" esperando algo. Neste caso, clockThread passa a ser Non-Runnable quando run() chama sleep()

      public void run() {

        Thread myThread = Thread.currentThread();

        while (clockThread == myThread) {

          repaint();

          try {

            Thread.sleep(1000);

          } catch (InterruptedException e) {

            // The VM doesn't want us to sleep anymore,

            // so get back to work

          }

        }

      }

    Quando o thread está dormindo, ele não roda, mesmo que a CPU esteja livre

    Depois de 1 segundo (1000 milissegundos), o thread para para Runnable novamente e vai rodar quando "receber" a CPU

    Para cada forma de entrar no estado Non-Runnable, alguma forma específica fará o thread retornar para o estado Runnable

    Ex.: para retornar de sleep, tempo tem que passar

    Ex.: para retornar de wait, outro objeto vai ter que fazer a condição ocorrer através de uma chamada a notify()

    Ex.: para retornar de I/O lento, o I/O tem que terminar

    Fé na missão!

    Fonte: http://www.dsc.ufcg.edu.br/~jacques/cursos/map/html/threads/ciclo.html