Guía de programación multiproceso pdf
El paquete conoce 1;
Importar lista enlazada de Java .util;
Pila de clases públicas
{ p>
LinkedList ltObject gts=nuevo LinkedListlt. Objeto gt();
Push de vacío público(objeto o)
{
Sincronizado{
s .
}
}
Objeto público pop()
{
Si (! s.isEmpty ( ))
Sincronizado {
Devuelve s. pop();
}
Otros
Devuelve nulo
}
público booleano isEmpty()
{
Devuelve s.
}
//Clase de producción
El generador de clases públicas implementa Runnable
{
Stack s;
Bienes públicos (pila)
{
this.s = s
}
Public void run( )
{
for(int I = 0; i lt200; i )
{
int tem =( int)( matemáticas .aleatorio()* 1000);
s . out.println(thread. currentthread(). getname () "Los datos en la pila son: " tem
Pruebe
{
thread . dormir (600);
} captura (excepción de interrupción e)
{
//TODO bloque de captura generado automáticamente
e. printstacktrace();
}
}
}
}
//Categoría de consumidor
p>La clase pública Consume implementa Runnable
{
Pila s;
Consumidor público (pila)
{
super();
this.s = s
}
Ejecución de vacío público()
{
for(int I = 0; i lt200; i )
{
if (!s.isEmpty())
sistema. fuera. println(hilo. hilo actual().
getname () "Los datos extraídos son: " s . pop());
Pruebe
{
thread(500);
} catch (excepción de interrupción e)
{
//TODO bloque de captura generado automáticamente
e.
}
}
}
}
//Clase de prueba
Clase pública TestProCon
{
Public static void main(String[] args)
{
Pila s = new Stack();
p>
Productor de hilo 1 = nuevo hilo (nuevo producto);
Productor de hilo 2 = nuevo hilo (nuevo generador
productor 1 . " productor 1 ");
productor 2. setname(" productor 2 ");
Consumo de hilo 1 = nuevo hilo (nuevo consumo);
Hilo consumo 2 = nuevo hilo (nuevo consumo);
Consumo de hilo 3 = nuevo hilo (nuevo consumo
consumir 1. setname("consumir 1"
);consumir 2 . setname(" consumir 2 ");
consumir 3 . setname(" consumir 3 ");
productor 1 .
productor 2. inicio();
consumir 1. inicio();
consumir 2. inicio();
consumir 3. inicio( ) ;
}
}