//QueueTestRandom.java //randomly enqueue and dequeue dummy objects to/from a queue. //the queue can be bounded or unbounded in size. //display size of queue at each operation. import java.util.*; import javax.swing.*; public class QueueTestRandom { public static void main(String[] args) { String input; int userAnswer; int queueMaxSize=-1; //fakeout compiler boolean isQueueBounded; LinkedList myQueue = new LinkedList(); //create empty queue userAnswer = JOptionPane.showConfirmDialog(null, "Do you want a bounded size queue?", "", JOptionPane.YES_NO_OPTION); if (userAnswer == JOptionPane.YES_OPTION) { input = JOptionPane.showInputDialog("Enter (maximum) size of queue"); queueMaxSize = Integer.parseInt( input ); isQueueBounded = true; } else isQueueBounded = false; do { if (Math.random() < .5) //enqueue if (isQueueBounded && myQueue.size()==queueMaxSize) System.out.print("overflow"); //does not do overflow else myQueue.addLast(new Object()); //enqueue empty object else //dequeue if (!myQueue.isEmpty()) //check queue (LinkedList) is not empty myQueue.removeFirst(); //dequeue and discard else System.out.print("underflow"); //Queue is empty, nothing to dequeue printQueue( myQueue ); //slow it down try { Thread.sleep(1000); //1 s pause } catch (InterruptedException e) { } } while (true); } static void printQueue( LinkedList q) { for (int i=1; i<=q.size(); i++) System.out.print("#"); System.out.println(); } }