Finish the abstruct Producer and Consumer