//File: QueueTest.java
//Seth Widoff, 8/8/96
//This class is a test method for the Producer and Consumer classes.
//The main method takes as arguments the number of producers, the
//number of consumers and the number of elements in the queue. It then
//spawn the specified threads and starts them.
package JACE.tests.Concurrency.Condition;
import JACE.ASX.TimeValue;
public class QueueTest
{
public static void main(String[] args)
{
if (args.length < 5)
{
System.out.println("Usage: java QueueTest <# producers> <# consumers> " +
"<# elements> <#iterations> <#timeout secs> <#timeout nano secs>");
System.exit(1);
}
int num_producers = Integer.parseInt(args[0]),
num_consumers = Integer.parseInt(args[1]),
num_elements = Integer.parseInt(args[2]),
num_iterations = Integer.parseInt(args[3]),
num_timeout_secs = Integer.parseInt(args[4]),
num_timeout_nano_secs = Integer.parseInt(args[5]);
if (num_elements < 1
|| num_consumers < 1
|| num_producers < 1)
{
System.out.println("All the parameters must be larger than zero.");
System.exit(1);
}
SimpleMessageQueue queue = new SimpleMessageQueue(num_elements);
Consumer[] consumers = new Consumer[num_consumers];
Producer[] producers = new Producer[num_producers];
JoinableThreadGroup thread_group = new JoinableThreadGroup("Producer Consumer");
for (int i = 0; i < num_producers; i++)
{
producers[i] = new Producer("Number " + (i + 1),
queue,
num_iterations,
new TimeValue (num_timeout_secs, num_timeout_nano_secs));
new Thread(thread_group, producers[i]).start();
}
for (int i = 0; i < num_consumers; i++)
{
consumers[i] = new Consumer("Number " + (i + 1), queue, num_iterations, new TimeValue (num_timeout_secs, num_timeout_nano_secs));
new Thread(thread_group, consumers[i]).start();
}
try
{
thread_group.join();
}
catch(InterruptedException excp)
{
System.out.println("QueueTest::main");
System.out.println(excp);
}
}
}