Breakout Problem Set Javadocs

Class GBS

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

public class GBS
extends GraphicalSemaphore

Implements simple binary semaphores in java witha graphical display.
Interface is gbs.request(), gbs.release().
It also provides a graphical display of the semaphores status.

This utility borrows heavily from the design and implementation of cs101.util.BS. It mearly adds a graphical display.
Copyright 1996 Massachusetts Institute of Technology

$Id:,v 1.3 2003/09/23 15:36:21 gus Exp $
Todd C. Parnell,, Joshua R. Brown, (added graphics), Lynn Andrea Stein, (semaphore design)
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
GBS(boolean initVal, java.lang.String label)
          Constructs a binary semaphore with the intial value passed in.
Method Summary
 void release()
          Releases the semaphore.
 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 GBS(boolean initVal,
           java.lang.String label)
Constructs a binary semaphore with the intial value passed in.

initVal - Initial value for semaphore. (true => in use)
label - Used to identfy the semaphore in the display.
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 the semaphore is 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 the semaphore. 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