1
resposta

Synchronized, threads e notify

O exemplo da impressão da lista "caseira" me deixou um pouco confuso sobre threads. Eu entendia que quem executa "wait" e "notify" são as próprias threads e não os objetos que elas utilizam. Não entendi bem por que utilizamos

synchronized (lista) {
      lista.wait();
}

Ao invés de

synchronized (this) {
       this.wait();
}

na thread que executa a TarefaImprimir.

1 resposta

Oi Paulo,

Na verdade vc vai dar synchronized no objeto que vc quer dar lock. É o objeto que varias threads podem mexer simultaneamente.

Se for uma lista de elementos que varias pessoas usam, dá lock nela. Se for a instancia do proprio objeto, dá lock no this. Ambos sao validos. Vc so precisa escolher qual o menor objeto possivel pra dar lock, aquele que realmente possui o estado compartilhado que daria problema se varios acessassem.