Buscar

multithread - Perguntas JAVA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 4 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

4. Multithread
Programas que possuem várias threads, executando diferentes tarefas, ao mesmo tempo.
4.1 Threads
“Duas tarefas ao mesmo tempo” 
Considerados cidadãos de primeira ordem.
Fazem parte das características mais relevantes da linguagem Java. Podem ser definidos como fluxo de controle sequencial isolado dentro de um programa. 
Threads em Java, não executam sozinhas, mas sim, dentro de um programa.
Possibilitam que um programa simples possa executar várias tarefas diferentes de maneira simultânea, sem depender uma das outras.
Se constituem de instâncias da classe thread*, que oferece suporte comunicativo. 
As tarefas as quais threads se destinam são executadas no método run( ).
O sistema operacional que implementa os threads. Podem ser implementados a partir da criação de uma subclasse thread, definindo e adequando o método run( ) à tarefa e pela criação de uma instância de thread que receberá um objeto capaz de implementar a interface runnable [objeto que providenciará o método run( )].
Estados de uma Thread
New Thread – inicialização; Neste estado nenhum recurso do sistema foi alocado para a thread, nesta etapa há a possibilidade de se fazer um start( ) [ativar a thread] ou stop( ) [ mata-la]. A partir do start( ) recursos do sistema necessários para que a thread rode são requisitados e, assim, chama o método run( ).
Runnable – estado onde a thread encontra-se pronta para rodar, é neste método que se define como a thread irá executar.
Not runnable – significa que por algum motivo a thread está impossibilitada de executar. Uma thread vai para este estado se:
Receber a mensagem suspend( ), para sair desse estado precisa ser enviada a mensagem resume( );
Receber a mensagem sleep( ), sai deste estado quando o número de milissegundos acaba;
Bloquear esperando I/O, sai deste estado quando a operação for completada;
Uso do método wait( ) para esperar por uma variável de condição, para voltar a ser Runnable, precisa ser liberada através de uma mensagem notify( ) ou notifyAll( ).
Dead – uma thread pode morrer quando seu método run( ) acaba ou pelo método stop( ). 
*Esta classe provê os métodos que se fazem necessários na criação, controle e execução dos threads.
4.3 Preemptivo e Não-preemptivo
A programação não-preemptiva possibilita ao scheduler executar o thread atual de maneira que este tenha que informar de forma explícita o momento em que for seguro a inicialização de um thread diferente. Esta programação sempre pede permissão ao programador, tem grande importância em situações críticas em relação ao tempo, onde uma interrupção inadequada no momento errado causaria problemas e/ou desastres. 
Em relação à preemptiva, se executa o thread atual até que tenha se passado uma fração de segundo, e se consiga, pela prioridade, suspende-a e reinicie outro thread por outra fração do segundo. Essa partilha tornou a elaboração de programas mais fáceis no processamento simultâneo, onde, cada thread é executado, tendo a noção de que o programador, de forma prudente, dará a oportunidade a todos os threads serem executados. 
5. Perguntas
I. De acordo com os conhecimentos adquiridos sobre a linguagem Java, marque a alternativa que apresenta, corretamente, os estados de uma thread:
a) Runnable, Not Runnable, Suspend e Dead.
b) New Thread, Runnable, Not Runnable e Dead.
c) New Thread, Runnable, Wait, Suspend e Dead.
d) Runnable, Not Runnable, Stop e Dead.
II. Assinale a alternativa correta sobre a linguagem Java: 
a) é uma linguagem compilada de propósito geral, estruturada, imperativa, procedural, padronizada pela ISO.
b) é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte.
c) é uma linguagem de programação interpretada orientada a objetos.
d) é uma linguagem de programação compilada multi-paradigma e de uso geral.
III. Assinale a alternativa incorreta:
a) a linguagem Java é compilada para um bytecode.
b) em um programa Java, um thread que esteja bloqueado, à espera de um recurso de entrada ou saída, retornará para o estado de execução quando o recurso for disponibilizado.
c) a linguagem Java tem sintaxe similar a linguagem C/C++/C#
d) no estado not runnable, a thread está impedida de executar. 
6. Respostas
I. De acordo com os conhecimentos adquiridos sobre a linguagem Java, marque a alternativa que apresenta, corretamente, os estados de uma thread:
a) Runnable, Not Runnable, Suspend e Dead.
b) New Thread, Runnable, Not Runnable e Dead.
c) New Thread, Runnable, Wait, Suspend e Dead.
d) Runnable, Not Runnable, Stop e Dead.
II. Assinale a alternativa correta sobre a linguagem Java: 
a) é uma linguagem compilada de propósito geral, estruturada, imperativa, procedural, padronizada pela ISO.
b) é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, funcional, de tipagem dinâmica e forte.
c) é uma linguagem de programação interpretada orientada a objetos.
d) é uma linguagem de programação compilada multi-paradigma e de uso geral.
III. Assinale a alternativa incorreta:
a) a linguagem Java é compilada para um bytecode.
b) em um programa Java, um thread que esteja bloqueado, à espera de um recurso de entrada ou saída, retornará para o estado de execução quando o recurso for disponibilizado.
c) a linguagem Java tem sintaxe similar a linguagem C/C++/C#
d) no estado not runnable, a thread está impedida de executar.

Continue navegando

Outros materiais