Questão sobre Thread!

1 resposta
toredobud

Alguém sabe me explicar pq esse código add 03 vezes ao invéz de 02 ????

[code]
import java.util.*;

public class NameList {
private List names = new ArrayList();

public synchronized void add(String name) {
names.add(name);
}

public synchronized void printAll() {
for (int i = 0; i < names.size(); i++) {
System.out.print(names.get(i) + " ");
}
}

public static void main(String[] args) {

final NameList sl = new NameList();
for (int i = 0; i < 2; i++) {
new Thread() {
public void run() {
sl.add("A");
sl.add("B");
sl.add("C");
sl.printAll();
}
}.start();


}
}
}
[code]

A saída disso é:
"A B C A B C A B C " ou
"A B C A A B C A B C "

1 Resposta

V

Na primeira execução do método printAll imprime A,B,C e na segunda vez a lista contém A,B,C,A,B,C . Daí o resultado A B C A B C A B C

Criado 23 de julho de 2008
Ultima resposta 23 de jul. de 2008
Respostas 1
Participantes 2