Code de problème de consommation du producteur d'applications multi-thread Java

Présentation du problème: en produire un, en consommer un et garder les threads synchronisés

Classe Message {
    titre
    de chaîne privé ; contenu de chaîne privé;
    drapeau booléen privé = vrai; // indique la production ou la consommation
    // drapeau = vrai autorise la production, mais n'autorise pas la consommation
    // indicateur = faux autorise la consommation n'autorise pas la production
 public void synchronized set ( Titre de chaîne, contenu de chaîne) {
     if (this.flag == false) {
         try {
            super.wait ();
        } catch (InterruptedException e) {
            // TODO Bloc de capture généré automatiquement
            e.printStackTrace ();
        }
     }
     this. title = title;
     try {
        Thread.sleep (100);
    } catch (InterruptedException e) {
        // TODO Bloc de capture généré automatiquement
        e.printStackTrace ();
    }
     this.content = content;
     this.flag = false; // 已经 生产 完毕 了
     super.notify (); // 唤醒 等待 的 线程
 } chaîne
 publique synchronisée get () {
     if (flag == true) {
         try {
            super.wait ();
        } catch (InterruptedException e) {
            // TODO Bloc catch généré automatiquement
            e.printStackTrace ();
        }
     }
     essayez {
        Thread.sleep (100);
    } catch (InterruptedException e) {
        // TODO Bloc catch généré automatiquement
        e.printStackTrace ();
    } essayez {
     renvoyez this.title + "-" + this.content;
    }enfin {
        this.flag = true;
        super.notify ();
    }
 }
}

class Producer implémente Runnable {
private Message msg;
producteur public (Message msg) {
    this.msg = msg;
    
} @Override
    public void run () {
        // TODO Stub de méthode généré automatiquement
        pour (int x = 0; x <100; x ++) {
            if (x% 2 == 0) {
                this.msg.set ("王健"," 宇宙 大 帅哥 ");
                
                
            } else {
                this.msg.set ("赵高", "第一 人");
            }
        }
    }
    
}

class Consumer implémente Runnable {
    private Message msg;
    Consommateur public (Message msg) {
        this.
    }
    @Override
    public void run () {
     for (int x = 0; x <100; x ++) {
         try {
            Thread.sleep (10);
        } catch (InterruptedException e) {
            // TODO Bloc catch généré automatiquement
            e.printStackTrace ();
        }
         System.out.println (this.msg.get ());
     }
        
    }
    
}

 
 
classe publique Test1 {
     public static void main (String [] args) lève Exception {
  Message msg = new Message ();
  nouveau fil (nouveau producteur (msg)). start (); // 启动 生产者 线程
  nouveau fil (nouveau consommateur (msg)). start (); // 启动 消费者 线程
        
    }
 
}

Je suppose que tu aimes

Origine www.cnblogs.com/yxj808/p/12674954.html
conseillé
Classement