Problemas de programación multiproceso
¿Público? ¿clase? MyStack{
¿Privado? int[]? objetos? =?¿Nuevo? int[200];
¿Privado? int? ¿tamaño? =?0;
¿Público? int? longitud()? {
¿Volver? Tamaño;
}
¿Público? ¿sincrónico? ¿Vacío? empujar (int? datos)? {
Prueba {
while (size?==?object . length){
system out . >
esto . esperar();
}
esto . notificar();
}catch(¿excepción de interrupción?e){
e . printstacktrace();
} catch(IllegalMonitorStateException?e){
e .
objs[tamaño]? =?datos;
tamaño++;
}
¿Público? ¿sincrónico? int? estallido()? {
Prueba {
while (size?==?0){
system out . p>esto . esperar();
}
esto notificar();
}catch(¿excepción de interrupción?e){
e. printstacktrace();
} catch(IllegalMonitorStateException?e){
e. >Tamaño-;
¿Devolución? objs[tamaño];
}
}//Productor
¿Público? ¿clase? ¿Productor? ¿extender? ¿Hilo? {
¿Privado? ¿Mi pila? pila;
¿Privado? ¿Cadena? Nombre;
¿Público? Productor (¿Mi pila? ¿pila? ¿cadena? nombre)? {
¿Esta. =?Pila;
¿Este nombre? =?Nombre;
}
¿Público? ¿Vacío? ejecutar(){
mientras(verdadero){
int? ¿metro? =?(int)(math . random()* 1000);
pila . push(m);
system out . "? Poner: "+m+" en la pila");
Pruebe {
thread .sleep(600
}catch (¿excepción de interrupción? e){
e . printstacktrace();
}
}
}
}/ / consumidor
¿Clase? ¿El consumidor se extiende? ¿Hilo?
{
¿Privado? ¿Mi pila? pila;
¿Privado? ¿Cadena? Nombre;
¿Público? Consumidor (¿Mi pila? ¿Pila? ¿Cadena? Nombre)? {
¿Esta. =?Pila;
¿El nombre? =?Nombre;
}
¿Público? ¿Vacío? ejecutar(){
mientras(verdadero){
int? ¿metro? =?pila pop();
System.out.prin
tln("Consumidor:"+nombre+"?无码:"?+?m);
Pruebe {
thread.sleep(500);
} catch(excepción de interrupción?e){
e . printstacktrace();
}
}?
}
}//Método principal
MyStack? ¿Pila? =?¿Nuevo? mi pila();
Productor? ¿p1? =?¿Nuevo? Productor(stack, "Productor 1");
¿Productor? ¿p2? =?¿Nuevo? Productor(stack, "Productor 2");
¿Consumidor? c1? =?¿Nuevo? Consumidor(pila, "Consumidor1");
¿Consumidor? c2? =?¿Nuevo? Consumidor(Pila, "Consumidor 2");
¿Consumidor? c3? =?¿Nuevo? Consumidor(Pila, "Consumidor 3");
p 1 inicio();
p2
c inicio (). ;
C2 . inicio();
C3 inicio();
.