Código de problema del consumidor productor de aplicaciones multiproceso Java

Descripción general del problema: Produzca uno, consuma uno y mantenga los hilos sincronizados

clase Mensaje {
    título de cadena privada;
    contenido de cadena privada;
    bandera booleana privada = verdadero; // indica producción o consumo
    // bandera = verdadero permite la producción, pero no permite el consumo
    // bandera = falso permite el consumo no permite la producción
 público conjunto vacío vacío ( Título de cadena, contenido de cadena) {
     if (this.flag == false) {
         try {
            super.wait ();
        } catch (InterruptedException e) {
            // TODO Bloque de captura generado automáticamente
            e.printStackTrace ();
        }
     }
     this. title = title;
     try {
        Thread.sleep (100);
    } catch (InterruptedException e) {
        // TODO Bloque catch generado automáticamente
        e.printStackTrace ();
    }
     this.content = contenido;
     this.flag = false; // 已经 生产 完毕 了
     super.notify (); // 唤醒 等待 的 线程
 }
 Cadena pública sincronizada get () {
     if (flag == true) {
         try {
            super.wait ();
        } catch (InterruptedException e) {
            // TODO Bloque de captura generado automáticamente
            e.printStackTrace ();
        }
     }
     prueba {
        Thread.sleep (100);
    } catch (InterruptedException e) {
        // TODO Bloque de captura generado automáticamente
        e.printStackTrace ();
    } try {
     return this.title + "-" + this.content;
    }finalmente {
        this.flag = true;
        super.notify ();
    }
 }
}

class Producer implementa Runnable {
mensaje privado msj;
Productor público (Mensaje msg) {
    this.msg = msg;
    
} @Override
    public void run () {
        // TODO Código auxiliar de método generado automáticamente
        para (int x = 0; x <100; x ++) {
            if (x% 2 == 0) {
                this.msg.set ("王健"," 宇宙 大 帅哥 ");
                
                
            } else {
                this.msg.set ("赵高", "第一 人");
            }
        }
    }
    
}

class Consumer implementa Runnable {
    mensaje privado msj;
    Consumidor público (Mensaje msg) {
        esto.
    }
    @Override
    public void run () {
     for (int x = 0; x <100; x ++) {
         try {
            Thread.sleep (10);
        } catch (InterruptedException e) {
            // TODO Bloque de captura generado automáticamente
            e.printStackTrace ();
        }
         System.out.println (this.msg.get ());
     }
        
    }
    
}

 
 
public class Test1 {
     public static void main (String [] args) lanza Exception {
  Message msg = new Message ();
  nuevo hilo (nuevo productor (mensaje)). inicio (); // 启动 生产者 线程
  nuevo hilo (nuevo consumidor (mensaje)). inicio (); // 启动 消费者 线程
        
    }
 
}

Supongo que te gusta

Origin www.cnblogs.com/yxj808/p/12674954.html
Recomendado
Clasificación