Pues hace poco que he empezado con la programación concurrente y tengo algunas dudas jeje.
Tengo que hacer un programa cutrísimo para este viernes pero no me sale, consiste simplemente en que 4 procesos llamen a un programa que lo que haga sea escribir una letra.
Por ejemplo, el proceso 1 le pasa "a", el 2 "b", el 3 "c" y el 4 "d" y se tiene que ejecutar varias veces el programa para que el resultado del mismo sea: abcdabcdabcd...
El problema que tengo es que no se como manipular los métodos wait y notify para que se sincronicen bien y salga el orden correcto.
Os dejo la estructura del código que creo que debe ser:
class MostrarLletres2{
public static void main (String[] args){
EscriureLletra2 a= new EscriureLletra2("a");
a.start();
EscriureLletra2 b= new EscriureLletra2("b");
b.start();
EscriureLletra2 c= new EscriureLletra2("c");
c.start();
EscriureLletra2 d= new EscriureLletra2("d");
d.start();
}
}
class EscriureLletra2 extends Thread{
private Lletra2 l;
private String s;
public EscriureLletra2 (String str){
s= str;
}
public void run(){
l= new Lletra2();
for (int i= 0; i< 100; i++){
try{
l.SetLletra(s);
sleep( (int) (Math.random() * 3000));
}
catch (InterruptedException e){
System.err.println("Exception " + e.toString());
}
}
}
}
class Lletra2{
private String valor;
private boolean esperar = false;
public synchronized void SetLletra (String s){
}
}
Me falta hacer el método SetLletra (como ya se ve

), pero es que no me sale, cuando lo hago o bien consigo que se me queden todos los procesos en wait (con lo cual no acaba), o no funciona bien y simplemente no sigue ningún orden.
Esta función SetLletra simplemente debería guardar el valor s en la variable valor y hacer el print de ésta, además de hacer la sincronización con los métodos wait y notify, que es lo que no me sale.
He puesto un poco rollo, pero necesito ayuda!
Saludos y gracias!