java - Why consumer is not consumin data in this program -
i'm new java , i'm trying implement simple producer consumer problem. below code i've written test it. have 3 classes, main class, producer class , consumer class. problem producer producing data consumer not consuming it. please explain me why happening. in advance.
public class producerconsumerwithqueue { /** * @param args */ public static void main(string[] args) { arraylist<string > queue = new arraylist<string>(); producer producer = new producer( queue); consumer consumer = new consumer( queue); consumer.start(); producer.start(); } } public class producer extends thread{ arraylist<string> queue; public producer(arraylist<string> queue) { this.queue = queue; } public void run(){ system.out.println("producer started"); system.out.println("producer size "+queue.size()); for(int i=0;i<50;i++){ try { synchronized (this) { if(queue.size()>10){ system.out.println("producer waiting"); wait(); }else{ system.out.println("producing "+i); queue.add("this "+i); notifyall(); } } } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } } } } public class consumer extends thread{ arraylist<string> queue; public consumer(arraylist<string> queue) { this.queue = queue; } public void run(){ system.out.println("consumer started"); system.out.println("consumer size "+queue.size()); try { synchronized (this) { for(int i=0; i>10; i++){ if(queue.isempty()){ system.out.println("consumer waiting()"); wait(); }else{ system.out.println("consuming data "+queue.remove(i)); notifyall(); } } } } catch (interruptedexception e) { // todo auto-generated catch block e.printstacktrace(); } } }
your consumer never run loop not run once
for(int i=0; i>10; i++){
check i>10 constraint. want try i<10
Comments
Post a Comment