Breakout Problem Set Javadocs

Class GCS

  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjava.awt.Panel
              extended bycs101.util.semaphore.GraphicalSemaphore
                  extended bycs101.util.semaphore.GCS
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer,

public class GCS
extends GraphicalSemaphore

cs101.util.GCS implements a counting semaphore of arbitrary size in java.
Interface is gcs.request(), gcs.release().
It also provides a graphical display of the semaphores status.

The general design of this utility was influenced by the design of the cs101.util.BS (wrote by Lynn Stein).
Copyright 1996 Massachusetts Institute of Technology

$Id:,v 2002/06/05 21:56:32 root Exp $
Todd C. Parnell,, Joshua R. Brown,
See Also:
Serialized Form

Nested Class Summary
Nested classes inherited from class java.awt.Panel
Nested classes inherited from class java.awt.Container
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
Field Summary
Fields inherited from class cs101.util.semaphore.GraphicalSemaphore
display, InstanceCounter, label, myNumber
Fields inherited from class java.awt.Component
Fields inherited from interface java.awt.image.ImageObserver
Constructor Summary
GCS(int size, int busy, java.lang.String label)
          Constructs a counting semaphore with the size and initial value passed in.
Method Summary
 void release()
          Releases a lock of the semaphore (if any are currently busy).
 void request()
          Requests the semaphore.
protected  void setupGUI()
          Does all of the graphical setup on this level then calls the superclasses method to finish the setup.
protected  void showStatus()
          Prints out the current state of the semaphore.
Methods inherited from class cs101.util.semaphore.GraphicalSemaphore
getMinimumSize, getPreferredSize
Methods inherited from class java.awt.Panel
addNotify, getAccessibleContext
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, setLayout, transferFocusBackward, transferFocusDownCycle, update, validate, validateTree
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusUpCycle
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail


public GCS(int size,
           int busy,
           java.lang.String label)
Constructs a counting semaphore with the size and initial value passed in. Uses the String past in to identfy the semaphore in the display.

size - The length of the semaphore (Probably the length of the buffer that it is associated with).
busy - The number of intially busy blocks in the semaphore (ie all busy = size, all free = 0).
label - An identfying string of text for the semaphore.
Method Detail


protected void setupGUI()
Does all of the graphical setup on this level then calls the superclasses method to finish the setup. This method is primarly responsible for setting up the display Panel.

setupGUI in class GraphicalSemaphore


public void request()
Requests the semaphore. If all of the locks in the semaphore are currently busy, causes the requesting process to wait() until the semaphore is release()d. Unlike java.lang.Object.wait(), the requesting process is not suspended if the semaphore is currently free.

Specified by:
request in class GraphicalSemaphore
See Also:
release(), Object.wait()


public void release()
Releases a lock of the semaphore (if any are currently busy). Any objects currently wait()ing on the semaphore are notify()d (and one of them will be granted the semaphore). Unlike java.lang.Object.notify(), the semaphore is also freed so that if there are no wait()ing objects, the next object to request() the semaphore will receive it.

Specified by:
release in class GraphicalSemaphore
See Also:
request(), Object.notifyAll()


protected void showStatus()
Prints out the current state of the semaphore. Changes the graphical display.

Specified by:
showStatus in class GraphicalSemaphore

Breakout Problem Set Javadocs