Galera… essa parte de notify() e wait() não está muito clara pra mim… nesse caso porque fica “Lendo dados de usuario” a vida toda?
package threads;
public class ManStrings {
public static void main(String args[]) {
Usuario u = new Usuario(1,"gravar arquivo");
u.setName("usuario1");
u.start();
Maquina m = new Maquina(u);
m.start();
}
}
class Usuario extends Thread {
private int codigo;
private String operacao;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getOperacao() {
return operacao;
}
public void setOperacao(String operacao) {
this.operacao = operacao;
}
public Usuario(int codigo, String operacao) {
super();
this.codigo = codigo;
this.operacao = operacao;
}
public void run() {
synchronized(this) {
while (true) {
System.out.println(" Thread "+Thread.currentThread().getName()+" Lendo dados de usuario");
try {
Thread.sleep(3000);
this.notifyAll();
} catch(InterruptedException e) {
System.out.println("Erro");
}
}
}
}
}
class Maquina extends Thread {
private Usuario usuario;
public Maquina(Usuario usuario) {
super();
this.usuario = usuario;
}
public void run() {
synchronized(usuario) {
while (true) {
try {
usuario.wait();
} catch(InterruptedException e) {
System.out.println("Vai a merda");
}
System.out.println(" Thread "+Thread.currentThread().getName()+ " Maquina trabalhando!");
}
}
}
}
