Red de conocimiento informático - Aprendizaje de programación - Ejemplo de cómo implementar una cola de mensajes multiproceso en Java (comunicación multiproceso Java)

Ejemplo de cómo implementar una cola de mensajes multiproceso en Java (comunicación multiproceso Java)

Cola de mensajes en Java

La cola de mensajes es un medio de comunicación entre subprocesos:

importjava.util.MsgQueue (cola de mensajes)*

publicclassMsgQueue{

privateVectorqueue=null;

publicMsgQueue(){

queue=newVector();

}

publicvoidsend(Objeto)

{

queue.addElement(o);

}

publicObjectrecv()

{

if(queue.size()==0)

returnnull;

Objeto=queue.();

queue.(0);//orqueue[0]= nullcanalsowork

returnnull;

}

}

Debido a que Java está bloqueado por objeto, add puede usarse para la sincronización de subprocesos para bloquear el objeto.

Se puede usar como una multitarea de subprocesos múltiples para manejar múltiples tareas para almacenar la tarea de la cola Su cliente El final incluye. clases de tareas encapsuladas y clases de subprocesos

Subprocesos múltiples de Java: comunicación entre subprocesos 2009-08-2521:58

1. Varios estados de subprocesos

Subprocesos tiene cuatro estados, y cualquier hilo debe estar en uno de estos cuatro estados:

1) Generación (Nueva): El objeto hilo se ha generado, pero no se ha iniciado, por lo que no se puede ejecutar. Por ejemplo, antes de llamar a la función start(), el objeto de hilo ha sido generado por new.

2) Ejecutable: cada sistema que admite subprocesos múltiples tiene un programador que selecciona un subproceso del grupo de subprocesos y lo inicia. Cuando un subproceso está en estado ejecutable, es posible que esté esperando en el grupo de subprocesos a que se inicie el programador y es posible que también se haya ejecutado. Si ejecuta el método start() del objeto subproceso, entonces el subproceso está en un estado ejecutable, pero obviamente el subproceso no necesariamente se está ejecutando.

3) Estado muerto: Cuando un hilo finaliza normalmente, se encuentra en un estado muerto. Por ejemplo, se ejecuta la función run() del hilo y el hilo entra en estado de pánico.

4) Bloqueo: Cuando un hilo está bloqueado, el programador del sistema lo ignorará y no lo programará. Cuando un subproceso estancado vuelve a un estado ejecutable, es posible que se vuelva a ejecutar. Por ejemplo, al llamar a la función wait () del subproceso, el subproceso entrará en un estado estancado y el subproceso solo podrá volver al estado ejecutable después de llamar a notificar o notificar a todo el subproceso dos veces.

2. Funciones de uso común en classThread

2.1suspend(), resume()

1) La función suspender() permite que el hilo entre en estado estancado. estado. Después de que suspender() interrumpe un hilo, no volverá al estado ejecutable a menos que se reciba un mensaje de reanudación().

2) Cuando se llama a suspend(), el hilo no liberará su "indicador de bloqueo".

Ejemplo 11:

classextendsThread{

publicstaticintshareVar=0;

public(Stringname){

super (nombre);

}

Esta es la primera vez que se llama al hilo. publicvoidrun(){

if(shareVar==0){

for(inti=0;i

shareVar;

si (shareVar==5){

this.suspend();//(1)

}}}

else{

System./(2)

}}

}

publicclassTestThread{

publicstaticvoidmain(String[]args){

t1=nuevo("t1");

t2=nuevo("t2" );

t1.start();//(5)

//t1.start();//(3)

t2.start();//(4)

}}