FileDocCategorySizeDatePackage
Supplier.javaAPI DocExample1506Thu May 23 09:32:50 BST 2002 sample.dynamic

Supplier.java

package  sample.dynamic;

/**
 * Represents the supplier component of the
 * sample application. Does some work, and
 * places the results into a queue.
 *
 * This class is identical to smaple.standard.Supplier.
 * We could have used that class in our example. However,
 * it has been copied into the dynamic package so that it
 * may inherit from dynamic.Basic instead of sample.standard.Basic.
 */
public class Supplier extends Worker {

    public static final String ROLE = "Supplier";
    private static final int DEFAULT_WORK_FACTOR = 100;

    public Supplier (Queue queue) {
        this(queue, DEFAULT_WORK_FACTOR);
    }
    public Supplier (Queue queue, int workFactor) {
        super(queue, workFactor);
    }

    public void run () {
        //**********
        // This is where the "work" takes place. In a real-world
        /// application that uses this pattern, this logic would
        /// be replaced by the real application logic.
        //**********
        _queue.addSupplier();
        while (!_stopCalled) {
            while (_suspended) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {}
            }
            // Burn some cycles...
            calculatePrimes(_workFactor);
            // Now place a WorkUnit in the Queue
            _queue.add(new WorkUnit());
            _numberOfUnitsProcessed++;
        }
        _queue.removeSupplier();
    }
}