SCJP Mock Q11

a) isso aí não compila nem *#@$%, tem }, ; e ) demais…
b) compilar, compila, mas na hora de rodar lança IllegalThreadStateException
c) compila, roda e juro pela minha mãe que imprime Thread 1 e Thread 2 nesta ordem
d) compila, roda, mas não boto minha mão no fogo com relação à ordem em que vai mostrar Thread 1 e Thread 2

public class GUJ11 {
	public static void main (String [] args) {
		new Thread (new Runnable() {
			public void run () {
				System.out.println ("Thread 1");
			}}).start();
		new Thread (new Runnable() {
			public void run () {
				System.out.println ("Thread 2");
			}}).start();
	}
}

letra d

c !

c? muito provavelmente, pelo menos na minha máquina que roda ruindow$, mas não há nenhuma garantia de que isso vá ocorrer, não há nada na especificação da linguagem Java que diga que o Thread onde start foi chamado primeiro irá rodar primeiro, portanto d está correta

Esse tipo de questão eh muito capiciosa!Api não diz q sim nem q não…?
Preciso estudar mais threads…

Threads e Garbage Collection são dois dos assuntos mais cobrados e são os dois assuntos onde quase nada é garantido, é uma festa :bday:

[quote=“Ironlynx”]Esse tipo de questão eh muito capiciosa!Api não diz q sim nem q não…?
Preciso estudar mais threads…[/quote]

A especificacao da linguagem determina que o comportamento da ordem de inicializacao de Threads é indeterminado, e depende da implementação da VM e do sistema operacional. Possivelmente, numa máquina com mais de um processador, as Threads seriam executadas em paralelo, e a que caísse no processador mais livre acabaria executando primeiro. POSSIVELMENTE. :wink:

Na minha prova, cairam 2 questões perguntando qual a saída usando 2 ou mais Threads.