Esperando en línea en cualquier momento, programación Java multiproceso, ¡se debe adoptar una operación exitosa!
//Clase de pila
paquete know1;
importar java.util.LinkedList;
pila de clase pública
{
LinkedListlt; s=new LinkedListlt;
public void push(Objeto o)
{
sincronizado(s){
s.push(o);
}
}
objeto público pop()
{
if(!s.isEmpty())
sincronizado(s){
return s.pop();
}
else
return null
}
public boolean isEmpty()
{
return s.isEmpty();
}
}
//Clase de producción
Producter de clase pública implementa Runnable
{
Stack s;
Producter público (Stack s)
{
this.s=s;
}
public void run()
{
for(int i=0 ;ilt;200;i )
{
int tem=(int)(Math.random()*1000);
s.push(tem );
System.out.println(Thread.currentThread().getName() "Los datos insertados en la pila son: "
try
<); p> {Thread.sleep(600);
} catch (InterruptedException e)
{
// TODO Auto- bloque de captura generado
e.printStackTrace();
}
}
}
} p>
//
Clase de consumidor
clase pública Consume implementa Runnable
{
Stack s;
public Consume(Stack s)
{
super();
this.s = s;
}
ejecución nula pública() p >
{
for(int i=0; ilt; 200; i )
{
if(!s.isEmpty())
System.out.println(Thread.currentThread().getName() "Los datos extraídos son: " s.pop()
intentar
{
Thread.sleep(500);
} catch (InterruptedException e)
{
// TODO generado automáticamente bloque de captura
e.printStackTrace();
}
}
}
}
//Clase de prueba
clase pública TestProCon
{
public static void main(String[] args)
{
Pila s =nueva Pila();
Hilo producter1=nuevo Hilo(nuevo(s) Productor(es));
Hilo producter2=nuevo Hilo(nuevo Productor(es));
producter1.setName("producter1");
producter2.setName("producter2");
Hilo consumir1=nuevo hilo (nuevos consumos);
Hilo consumir2=nuevo hilo(nuevos consumos);
Hilo consumir3=nuevo hilo(nuevos consumos);
Hilo consumir3=nuevo hilo(nuevos consumos); p> p>
consumir1.setName("consumir1");
consumir2.setName("consumir2");
consumir3.setName("consumir3"); p>
productor1.start();
productor2.start();
consumir1.start();
consumir2.start(); p> consumir3.start();
}
}