Temas de programación multiproceso
El paquete conoce 1;
Importar lista enlazada de Java .util;
Pila de clases públicas
{ p>
ListaEnlazada & ltObject & gts=nueva ListaEnlazada<. Objeto & gt();
Push de vacío público(objeto o)
{
Push sincronizado{
s. ;
}
}
Objeto público pop()
{
Si (!s. está vacío ())
Sincronizado {
Retorno s. pop();
}
Otros
Retorno null
}
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<200;i++)
{
int tem =(int)( matemáticas .aleatorio()* 1000);
s . out.println(thread.currentthread().getname ()+"Los datos en la pila son:"+tem);
Probar
{
thread . sleep(600);
} catch (excepción de interrupción e)
{
// TODO bloque de captura generado automáticamente
e.printstacktrace();
}
}
}
}
//Categoría de consumidor
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<200;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. p>
}
}
}
}
//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. setname ("productor 1); ");
productor 2. setname("productor 2 ");
Consumo de hilo 1 = nuevo hilo (nuevo consumo);
Consumo de hilo 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 ();
}
}