Visão geral
Para programas multi -thread, produtores e modelos de consumidores são modelos muito clássicos. Mais preciso, deve ser chamado de "modelo de wearhouse do produtor-consumidor". Depois de deixar o armazém, produtores e consumidores não têm o espaço de armazenamento compartilhado, e não há nenhum problema que não seja colaborativo.
Exemplo exemplar
Defina uma cena. Um armazém apenas permite que 10 itens sejam armazenados. Ao mesmo tempo, você precisa prestar atenção aos 4 pontos a seguir:
1. Apenas um produtor pode ser produzido ao mesmo tempo.
2. Apenas um consumo de consumidor pode estar disponível ao mesmo tempo.
3. Quando o armazém está vazio, os consumidores não podem continuar consumindo. Os consumidores precisam reciclar se o status atual do armazém está vazio antes do consumo do consumidor.
4. Quando o armazém está cheio, o produtor não pode continuar produzindo. para executar.
O código de exemplo é o seguinte:
Classe pública Concorrência {public static void main (string [] args) {warehouse warehouse = new warehouse (); NOVO THREADO (Consumidor) .start ();}} classe de classe {private estático Int store_size = 10; {Sincronizado (this) {while (index == store_size) {try {this.wait ();} catch (interruptedException e) {e.printStackTrace ();}} ts [index ++] = produto; ); ) {E.PrintStackTrace ();} String Proput = StoreProduts [Index- 1]; (); String Product = "Produto"+i; }}}