Red de conocimiento informático - Material del sitio web - Problemas de programación multiproceso

Problemas de programación multiproceso

//Pila

¿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();

.