1、 Students ID:Date of Submission: Dec 20, 2011Table of ContentsRequirement of Project.3Operating Environment.3Principle of Program.3Structure3Flow Chart4Code of the Program.5Results of Simulation.8Considerable Improvement 9Conclusion.11References.12Requirement of ProjectThe producer-consumer problem
2、illustrated as the model of bounded-buffer, require sequential processes or threads running asynchronously and possibly sharing data. There are several methods to solve this problem, and semaphore, mutex(simplified semaphore) and monitor are commonly used on this. This project requires us to make pr
3、oducers and consumers running as separated threads, and semaphores with full, empty, and mutex parameters to simulate this procedure.In the textbook, we are suggested to use Pthreads or Win32 API, however, I decided to use Java to simulate the procedure, because Java is the most familiar language th
4、at we have learned.Because of the Java Virtual Machine (JVM) layer, many structures are made simple in Java compared to win32 API and C in UNIX environment, and we can simulate the problem without a certain semaphore.Operating EnvironmentOS: Windows 7, JDK: Java 7 edition 1.7.0_02Principle of Progra
5、mBecause of the limited Java programming skills, I can only simulate the procedure in the most simplified way. Only three sub-classes are put under the ProducerConsumer Class in the program, and only one method which is the necessary main void method in this Class.The three sub-classes are storage,
6、producer and consumer, and producer and consumer classes are set as Java threads, because they extend library class of Thread in java.lang.Object package.There are several objects and methods in these three sub-classes, and they are carefully defined as private, public or synchronized. Structure:The
7、 full structure of whole program is illustrated in the table below.Super Class: ProducerConsumer With Object: p1p7 (seven producer objects), c1c3 (three consumer objects)With method: mainSub-class: Godown / storage class Inner variable: max_size, curnum / the number that the storage have currentlyIn
8、ner method: produce(int), consume(int) ProducerInner variable: neednum / number of producing run / inherit from the Thread Class in java.lang.Object Consumer neednum / number of consumingFlow Chart:The flow chart of this program is illustrated as below:The key of realization of this procedure is tha
9、t make each the producer and consumer a real java thread. By looking up the official java doc in Oracle Websites, we can find details of the class Thread in java.lang.Object packages. I find some methods and examples of usage, and by the functions and methods provided by official, I use the method o
10、f notifyAll(), wait().Table of methods of java.lang.Object in official java doc is shown below:Method Summaryprotected Objectclone()Creates and returns a copy of this object.booleanequals(Objectobj)Indicates whether some other object is equal to this one.voidfinalize()Called by the garbage collector
11、 on an object when garbage collection determines that there are no more references to the object.ClassgetClass()Returns the runtime class of thisObject.inthashCode()Returns a hash code value for the object.notify()Wakes up a single thread that is waiting on this objects monitor.notifyAll()Wakes up a
12、ll threads that are waiting on this objectStringtoString()Returns a string representation of the object.wait()Causes the current thread to wait until another thread invokes themethod or themethod for this object.wait(longtimeout)Causes the current thread to wait until either another thread invokes themethod for this object, or a specified amount of time has elapsed.timeout, intnanos)method for this object, or some other thread interrupts the current thread, or a certain amount of real time h
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1