Você está na página 1de 5

1.

Fazendo a Thread esperar, um thread ir para o estado Esperando quando:

Escolha uma:

a) O mtodo sleep (faz a thread esperar por um determinada tempo) for chamado.
b) O mtodo wait (faz a thread esperar por uma determinada condio) for chamado
c) Quando realizar solicitao de I/O.
d) Nenhuma das alternativas esto corretas
e) Todas as alternativas esto corretas

2. Quando um thread criado sem a especificao de um grupo no seu construtor, o


Sistema de Execuo Java a coloca no mesmo grupo do thread que a criou. Quando um
thread for criado em uma aplicao sem a especificao de um grupo a mesma ser
colocada no grupo padro main o qual criado na inicializao da aplicao pelo
Sistema de Execuo Java.
muito comum que o programa no se preocupe com grupos no uso de threads em
Java deixando que o Sistema de Execuo Java faa a tarefa de agrupar os threads.
Mas, quando uma aplicao for trabalhar com diversas threads mais conveniente
agrup-las, pois algumas operaes devero ser feitas sobre os threads e a criao de
grupos de threads ir facilitar tais operaes.

Assinale a alternativa que mostra a criao de um grupo de threads:

Escolha uma:

a) GroupThread grupoDeThreads = new GroupThread(Nome Grupo de Threads)


b) GroupThread grupoDeThreads = void GroupThread(Nome Grupo de Threads)
c) GroupThread grupoDeThreads = void GroupThread{Nome Grupo de Threads}
d) GroupThread new grupoDeThreads = void GroupThread
e) Nenhuma das alternativas

Escreva um exemplo de cdigo demonstrando o controle e esforo necessrio para preveno


de Starvation / Deadlocks

E explique cada Linha de cdigo.

class JantarDosFilosofos {

public static void main (String[] args) {

/* Mesa de jantar para os filsofos */

MesaDeJantar mesa = new MesaDeJantar ();

/* Criao das threads representando os cinco filsofos */

for (int filosofo = 0; filosofo < 5; filosofo++) {

new Filosofo("Filosofo_" + filosofo, mesa, filosofo).start();


}

3. A inicializao de um thread feita atravs do mtodo run() e nesse momento os


recursos necessrios para execuo da mesma so alocados, tais como recursos para
execuo, escalonamento e chamada do mtodo start do thread. Aps a chamada ao
mtodo start a thread est pronta para ser executada e ser assim que for possvel,
at l ficar no estado Pronta. Essa mudana de estado (Pronta/Executando) ser feita
pelo escalonador do Sistema de Execuo Java. O importante saber que a thread
est pronta para executar e a mesma ser executada, mais cedo ou mais tarde de
acordo com os critrios, algoritmo, de escalonamento do Sistema de Execuo Java.

Podemos afirmar que o texto acima est:

a) Demonstrando a inicializao dos threads atravs do mtodo run


b) Demonstrando a inicializao dos threads, mas o estado Pronta/Executando no
feito pelo escalonador do sistema e sim pelo start
c) Incorreta, os mtodos esto invertidos, no ser iniciada a Thread.
d) Correto, a inicializao das Threads feita atravs dos mtodos conforme a explicao
do texto
e) Est iniciando as Threads, e o escalonamento do sistema de execuo Java pode
identificar a ordem lgica do algoritmo.

4. A criao de threads em Java uma atividade extremamente simples e existem duas


formas distintas de faz-lo: uma atravs da herana da classe ______, outra atravs da
implementao da interface ________, e em ambos os casos a funcionalidade
(programao) dos threads feita na implementao do mtodo _______.

Escolha a alternativa que completa as lacunas:

a) Teste, Thread e run


b) Thread, GUI e Runnable
c) Thread, Runnable e run
d) Nenhuma das alternativas

5. O escalonamento fundamental quando possvel a execuo paralela de threads,


pois, certamente existir mais threads a serem executadas que processadores, assim a
execuo paralela de threads simulada atravs de mecanismos do escalonamento
desses threads, onde os processadores disponveis so alternados pelas diversas
threads em execuo. O mecanismo de escalonamento utilizado pelo Sistema de
Execuo Java bastante simples e determinstico, e utiliza um algoritmo conhecido
como ___________ com ____________, o qual escalona threads baseado na sua
prioridade. Os threads escalonveis so aquelas que esto nos estados _________ ou
__________, para isso toda thread possui uma prioridade, a qual pode ser um valor
inteiro no intervalo [MIN_PRIORITY ... MAX_PRIORITY], (estas so constantes definidas
na classe Thread), e quanto maior o valor do inteiro maior a prioridade do thread.
Cada thread Nova recebe a mesma prioridade do thread que a criou e a prioridade de
um thread pode ser alterada atravs do mtodo ___________.

Escolha a alternativa que completa as lacunas:

a) Escalonamento, Prioridades Fixas, Pronto, Executando, setPriority(int priority)


b) Escalonamento, Prioridades Fixas, Executando, Pronto, setPriority(int priority).
c) Escalonamento, Prioridades Fixas, Pronta, Executando, setPriority(on priority).
d) Escalonamento, Prioridades Fixas, Executando, Pronto, setPriority(on priority)
e) Prioridades Fixas, Escalonamento, Executando, Pronto, setPriority(int priority)

6. O algoritmo de escalonamento com Prioridades Fixas utilizado pela Sistema de


Execuo Java funcionada seguindo alguns parmetros, assinale a alternativa que
apresenta estes parmetros:

a) Quando vrios threads estiverem prontos, aquela que tiver a maior prioridade ser
executada. Quando existir vrios threads com prioridades iguais, as mesmas sero
escalonadas segundo o algoritmo Round-Robin de escalonamento
b) Um thread ser executado at que: um outro thread de maior prioridade fique pronto;
acontecer um dos eventos que a faa ir para o estado esperando; o mtodo run
acabar; ou em sistema que possuam fatias de tempo a sua fatia de tempo se esgotar
c) Threads com prioridades mais baixas tero direito garantido de serem executadas para
que situaes de starvation no ocorram
d) Todas as alternativas esto corretas
e) Todas as alternativas esto incorretas

7. Explique o funcionamento de cada linha do cdigo abaixo:


public class CorridaDeSapos { //inicializa uma classe
final static int NUM_SAPOS = 5; //define uma constante NUM_SAPOS que recebe 5
final static int DISTANCIA = 500; //define uma constante DISTANCIA que recebe
500
public static void main (String[] args) {
SapoCorrendoThread sapo_1 = new SapoCorrendoThread("SAPO_01",
DISTANCIA); //Instancia um objeto 'sapo_1' do tipo SapoCorrendoThread, atribuindo o
nome como "SAPO_01" e passando a distncia como 500.
SapoCorrendoThread sapo_2 = new SapoCorrendoThread("SAPO_02",
DISTANCIA); //Instancia um objeto 'sapo_1' do tipo SapoCorrendoThread, atribuindo o
nome como "SAPO_02" e passando a distncia como 500.
SapoCorrendoThread sapo_3 = new SapoCorrendoThread("SAPO_03",
DISTANCIA); //Instancia um objeto 'sapo_1' do tipo SapoCorrendoThread, atribuindo o
nome como "SAPO_03" e passando a distncia como 500.
SapoCorrendoThread sapo_4 = new SapoCorrendoThread("SAPO_04",
DISTANCIA); //Instancia um objeto 'sapo_1' do tipo SapoCorrendoThread, atribuindo o
nome como "SAPO_04" e passando a distncia como 500.
SapoCorrendoThread sapo_5 = new SapoCorrendoThread("SAPO_05",
DISTANCIA); //Instancia um objeto 'sapo_1' do tipo SapoCorrendoThread, atribuindo o
nome como "SAPO_05" e passando a distncia como 500.

sapo_1.setPriority(Thread.MIN_PRIORITY); //Define que o objeto sapo_1 ter


prioridade mnima no escalonamento da thread
sapo_2.setPriority(Thread.MIN_PRIORITY); //Define que o objeto sapo_2 ter
prioridade mnima no escalonamento da thread
sapo_3.setPriority(Thread.NORM_PRIORITY); //Define que o objeto sapo_3 ter
prioridade normal no escalonamento da thread
sapo_4.setPriority(Thread.MAX_PRIORITY); //Define que o objeto sapo_4 ter
prioridade mxima no escalonamento da thread
sapo_5.setPriority(Thread.MAX_PRIORITY); ////Define que o objeto sapo_5 ter
prioridade mxima no escalonamento da thread

sapo_1.start(); //inicializa a thread do objeto sapo_1


sapo_2.start(); //inicializa a thread do objeto sapo_2
sapo_3.start(); //inicializa a thread do objeto sapo_3
sapo_4.start(); //inicializa a thread do objeto sapo_4
sapo_5.start(); //inicializa a thread do objeto sapo_5
} // fecha o mtodo main
} // fecha a classe CorridaDeSapos

8. A criao de um thread feita atravs do chamado ao seu construtor colocando a


thread no estado Nova, o qual representa um thread vazia, ou seja, nenhum recurso
do sistema foi alocado para ela ainda. Quando uma thread est nesse estado a nica
operao que pode ser realizada a inicializao dessa thread atravs do mtodo
start(), se qualquer outro mtodo for chamado com a thread no estado Nova ir
acontecer uma exceo (IllegalThreadStateException), assim como, quando qualquer
mtodo for chamado e sua ao no for condizente com o estado atual da thread.

Podemos afirmar que o texto acima est:

a) Incorreto no existe uma exceo para seu estado


b) Demonstrando a criao de uma classe mas sem as caractersticas de thread
c) Incorreto, a criao de um thread feita atravs do chamado do seu vetor
d) Mostrando a criao de um thread, mas sua inicializao atravs do mtodo run
e) Correto, demonstrando a criao de um thread e representando seu funcionamento
9. Threads Daemon, so threads que rodam em background e realizam tarefas de
limpeza ou manuteno, as quais devem rodar enquanto a aplicao estiver em
execuo, os threads daemons somente morrerem quando a aplicao for encerrada.
Sendo que o Sistema de Execuo Java identifica que uma aplicao acabou quando os
seus threads esto mortos, assim para que seja possvel que uma aplicao seja
encerrada ainda possuindo threads, tais threads devem ser daemon. Em outras
palavras, o Sistema de Execuo Java ir terminar uma aplicao quando os seus
threads no daemon morrerem. Threads daemons so denominadas de Threads de
Servio e as no daemon so denominadas de Threads de Usurio.

Assinale a alternativa correta:

a) Os mtodos para manipulao de threads so seteDaemon e isDaemon


b) O mtodo setDaemon verifica se um thread daemon
c) O mtodo inDaemon torna ou no um thread daemon
d) Todas as alternativas esto corretas
e) Nenhuma alternativa est correta

Você também pode gostar