개요
다중 스레드 프로그램의 경우 생산자와 소비자 모델은 매우 고전적인 모델입니다. 더 정확한 것은 "생산자 소비자-웨어 하우스 모델"이라고해야합니다. 창고를 떠난 후 생산자와 소비자는 공유 저장 공간이 없으며 공동 작업이 아닌 문제는 없습니다.
모범적 인 예
장면을 정의하십시오. 창고는 10 개의 품목 만 저장 할 수 있으며 소비자는 한 번에 제품을 꺼낼 수 있습니다. 동시에 다음 4 점에주의를 기울여야합니다.
1. 생산 방법을 동시에 잠그면 한 명의 생산자 만 생산할 수 있습니다.
2. 동시에 소비자 소비를 동시에 사용할 수 있습니다.
3. 창고가 비어 있으면 소비자는 계속 소비 할 수 없습니다. 소비자는 소비자 소비 전에 현재 창고 상태가 비어 있는지 여부를 재활용해야합니다. 소비자 스레드는 대기가 필요합니다.
4. 창고가 가득 차면 생산자는 계속 생산할 수 없습니다. 실행합니다.
예제 코드는 다음과 같습니다.
공개 클래스 동의 {public static void main (String [] args) {Warehouse warehouse = 새로운 생산자 (창고); 새 스레드 (소비자) .Start ()} Class Warehouse {private string = 10; {synchronized (this) {while (index == store_size) {try {this.wait ();} catch (InterpruptedException e) {e.printstacktrace ();}} ts [index ++] = roduct; ); System .out.println ( "프로덕션 :" + product + ", 현재 창고 :" + index + "A Cargo") {try {this.wait ();} catch e ) {e.printstacktrace ();} string proput = .out.println; (); 반환 제품;}} Class Producer는 런닝 가능 String Product는 "+I; }}}