Direto do livro da Keity:
public static void main(String[] args) {
Thread t = new Thread();
t.start();
}
" O thread referênciado por t terá a mesma prioridade do thread main(), já que esse está executando o código que cria a instância de t; "
Se as prioridades forem iguais, a implementação do agendador fará uma das duas coisas:
- Selecionar a execução de um thread mantendo-o assim até que seja bloqueado ou conclua seu método run();
- Dividir o tempo dos threads do pool para dar a todos uma oportunidade igual de execução.
Testando eu obtive as saídas:
0, 2, 4, 6, 0, 2, 4, 6, ok, entendi com base no que ela disse.
0, 2, 4, 6, 8, 10, 12, 14, idem !
Porém a questão do testKiller diz que as saídas possível são :
A. 0, 2, 4, 4, 6, 8, 10, 6, NÃO ENTENDI ESSA SAÍDA AQUI !!!
C. 0, 2, 4, 6, 8, 10, 12, 14,
public class Thread1 {
int x = 0;
public class Runner implements Runnable {
public void run() {
int current = 0;
for(int i = 0; i < 4; i++) {
current = x;
System.out.print(current + ", ");
x = current + 2;
}
}
}
public void go() {
Runnable r = new Runner();
new Thread(r).start();
new Thread(r).start();
}
public static void main(String[] args) {
new Thread1().go();
}
}
Outra coisa, cada Thread1 irá executar uma cópia do método run() de Runner ? ou executarão o mesmo ?
Em outras palavras, cada Thread1 possui cópias das variáveis locais do run de Runner ?
Cada objeto possui seu proprio valor x ? Ou dividem o mesmo ?! Pelo que entendi, eles dividem !!!
Grato a quem ajuda !!!