org.wegra.util.dispatcher
Class AsynchronousDispatcher

java.lang.Object
  extended byjava.lang.Thread
      extended byorg.wegra.util.dispatcher.AsynchronousDispatcher
All Implemented Interfaces:
java.lang.Runnable

public final class AsynchronousDispatcher
extends java.lang.Thread

Ȱ¼º °´Ã¼(Active Object)¸¦ ±¸ÇöÇϱâ À§Çؼ­ »ç¿ëµÇ´Â µð½ºÆÐÃÄ ´ÙÀ½°ú °°Àº ½ÄÀ¸·Î µð½ºÆÐÃĸ¦ »ý¼ºÇÏ°í ½ÃÀÛÇÒ ¼ö ÀÖ´Ù.

	AsynchronousDispatcher dispatcher = new AsynchronousDispatcher();
	dispatcher.start();

	dispatcher.dispatch(	// »ç¿ë
		new Runnable() {
			System.out.println("hello world");
		}
	);

	dispatcher.close();	// Á¾·á
 

Version:
1.0 (2001-09-02)
Author:
wegra(Bok-Youn Lee)

Field Summary
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Constructor Summary
AsynchronousDispatcher()
          µð½ºÆÐÃĸ¦ »ý¼ºÇÑ´Ù.
 
Method Summary
 void close()
          µð½ºÆÐÃĸ¦ Á¾·áÇÑ´Ù.
 void dispatch(java.lang.Runnable operation)
          ÁöÁ¤µÈ ÀÛ¾÷ÀÌ ÇöÀç µð½ºÆäÃÄÀÇ À̺¥Æ® ó¸® ½º·¹µå¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù.
 void dispatch(Subscriber action, java.lang.Object argument)
          ÀÎÀÚ·Î Command °´Ã¼¸¦ ¹Þ¾Æ µð½ºÆÐÄ¡ÇÑ´Ù.
 void run()
          ÀÌ ¸Þ¼Òµå°¡ public ÀÎ ÀÌÀ¯´Â Thread¸¦ ¹Ù·Î »ó¼Ó ¹Þ¾Ò±â ¶§¹®ÀÌ´Ù.
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AsynchronousDispatcher

public AsynchronousDispatcher()
µð½ºÆÐÃĸ¦ »ý¼ºÇÑ´Ù. ÀÌ °´Ã¼´Â dispatch() ¿äóÀ» ±â´Ù¸®´Â µ¥¸ó ½º·¹µåÀÌ´Ù. ¿äûÀÌ ¿À¸é ¿äû ¼ø¼­´ë·Î ÀÛ¾÷ÀÌ ½ÇÇàµÈ´Ù. ½º·¹µå°¡ µ¥¸ø ½º·¹µåÀ̹ǷΠ´Ù¸¥ ÀÏ¹Ý ½º·¹µå°¡ ¸ðµÎ Á¾·áµÇ¸é ÇÔ²² Á¾·áµÈ´Ù.

Method Detail

close

public final void close()
µð½ºÆÐÃĸ¦ Á¾·áÇÑ´Ù. Áï, ´õ ÀÌ»ó ÀÛ¾÷ ¿äûÀ» ¹Þ¾ÆµéÀÌÁö ¾Ê´Â´Ù. Á¾·á ¿äû ½Ã¿¡ ¾ÆÁ÷ ¼öÇàµÇÁö ¾Ê°í ÀÖ´ø ¸ðµç ÀÛ¾÷Àº ¿¹Á¤´ë·Î ½ÇÇàµÇ¸ç ´ÜÁö, »õ·Î¿î ÀÛ¾÷À» ¹Þ¾ÆµéÀÌÁö ¾ÊÀ» »ÓÀÌ´Ù. ÀÌ ¸Þ¼Òµå´Â ³ª¸ÓÁö ÀÛ¾÷µéÀÌ ¸ðµÎ ¼öÇàµÇÁö ¾ÊÀº »ýÅÂ¶óµµ °ð¹Ù·Î º¹±ÍÇÑ´Ù. µð½ºÆÐÃÄÀÇ ¸ðµç ÀÛ¾÷ÀÌ ¿ÏÀüÈ÷ ³¡³¯ ¶§±îÁö ±â´Ù¸®±â À§Çؼ­´Â µð½ºÆÐÃÄ °´Ã¼¿¡ join() ¸Þ½ÃÁö¸¦ º¸³»¸é µÈ´Ù. AsynchronousDispatcher dispatcher = new AsynchronousDispatcher(); //.. dispatcher.close(); // »õ·Î¿î ¿äûÀ» °ÅºÎÇÑ´Ù. dispatcher.join(); // ³ª¸ÓÁö ÀÛ¾÷µéÀÌ ¸ðµÎ ó¸®µÉ ¶§±îÁö ±â´Ù¸°´Ù. dispatch(null) ¸¦ È£ÃâÇØµµ ¸¶Âù°¡Áö·Î µð½ºÆÐÃĸ¦ ºí·ÏÅ· ¾øÀÌ Á¾·áÇÒ ¼ö ÀÖ´Ù. ÀÌ ¶§¿¡µµ ¸¶Âù°¡Áö·Î dispatch(null) ÀÌÈÄ ¿äûµÇ´Â ¸ðµç ¿äûÀº ¹«½ÃµÈ´Ù. ÇÏÁö¸¸ close() ¸¦ »ç¿ëÇßÀ» °æ¿ì¿Í ´Ù¸£°Ô ¿¹¿Ü¸¦ ¹ß»ý½ÃŰÁö ¾Ê´Â´Ù. ÀÌ¹Ì Á¾·áµÈ Å¥¿¡ ´ëÇØ¼­ ´Ù½Ã close() ¸¦ È£ÃâÇÏ´Â °æ¿ì ¹«½ÃµÈ´Ù.


dispatch

public final void dispatch(java.lang.Runnable operation)
ÁöÁ¤µÈ ÀÛ¾÷ÀÌ ÇöÀç µð½ºÆäÃÄÀÇ À̺¥Æ® ó¸® ½º·¹µå¿¡¼­ ½ÇÇàµÉ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÀÛ¾÷Àº ¿äûµÈ ¼ø¼­´ë·Î Â÷·ÊÂ÷·Ê ½ÇÇàµÈ´Ù.

Parameters:
operation - "Ä¿¸ÇÆ®" °´Ã¼·Î ¼öÇàÇÒ ÀÛ¾÷À» ĸ½¶È­ÇÑ´Ù. ¸¸¾à operation ÀÌ nullÀÏ °æ¿ì µð½ºÆÐÃÄ´Â ÀÌ ¿äûÀÌ Å¥·ÎºÎÅÍ ºüÁ®³ª¿Ã ¶§ Á¾·áµÈ´Ù. nullÀ» ÀÎÀÚ·Î ÇÑ È£Ãâ ÀÌÈÞ¿¡ ¿äûµÇ´Â ÀÛ¾÷Àº ½ÇÇàµÇÁö ¾Ê´Â´Ù.
Throws:
ClosedQueueException - ÀÌ¹Ì Á¾·áµÈ »óÅ¿¡¼­ ÀÛ¾÷À» ¿äûÇÏ¸é ¹ß»ýÇÑ´Ù. ´Ü, close()¸¦ ÅëÇØ ¸í½ÃÀûÀ¸·Î Á¾·áµÈ °æ¿ì¿¡¸¸ ¹ß»ýÇÑ´Ù.

dispatch

public final void dispatch(Subscriber action,
                           java.lang.Object argument)
                    throws ClosedQueueException
ÀÎÀÚ·Î Command °´Ã¼¸¦ ¹Þ¾Æ µð½ºÆÐÄ¡ÇÑ´Ù.

Throws:
ClosedQueueException

run

public void run()
ÀÌ ¸Þ¼Òµå°¡ public ÀÎ ÀÌÀ¯´Â Thread¸¦ ¹Ù·Î »ó¼Ó ¹Þ¾Ò±â ¶§¹®ÀÌ´Ù. µû¶ó¼­, ÀÌ ¸Þ¼Òµå¸¦ Á÷Á¢ È£ÃâÇØ¼­´Â ¾ÈµÈ´Ù. µð½ºÆÐÃÄÀÇ À̺¥Æ® ¼øÈ¯¹®ÀÌ ÀÌ ¸Þ¼Òµå¿¡ ±¸ÇôµÇ¾î ÀÖ´Ù.