org.wegra.thread
Class SpinLock

java.lang.Object
  extended byorg.wegra.thread.SpinLock

public final class SpinLock
extends java.lang.Object

°£´ÜÇÏ°Ô ±¸ÇöµÈ ¹ü¿ë ½ºÇɶô Ŭ·¡½ºÀÌ´Ù. ÀÌ Å¬·¡½º´Â ¾î¶² Á¶°ÇÀÌ ÂüÀÌ µÉ ¶§±î Áö ±â´Ù¸®±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº Äڵ忡 »ç¿ëÇÒ ¼ö ÀÖ ´Ù.

	boolean someCondition = false; // ´Ù¸¥ ¾²·¹µå¿¡ ÀÇÇØ set µÈ´Ù.

	SpinLock lock = new SpinLock();
	lock.acquire(	new Condition()
 				 	{
						public boolean isSatisfied()
 						{
							return someCondition == false;
						}
					},
					1000	// ÃÖ´ë 1Ãʰ£ ±â´Ù¸°´Ù.
				);
	//...
	lock.release();
	
À§ÀÇ ÄÚµå´Â ´ë°­ ´ÙÀ½°ú ºñ½ÁÇÑ È¿°ú¸¦ °¡Áø´Ù.
	Object lock;

	while( someCondition == false )
		lock.wait(1000);
	//...
	lock.notify();

 SpinLockÀ» »ç¿ëÇÒ ¶§´Â ŸÀӾƿôÀÌ Á¤È®ÇÏÁö¸¸
 wait()¸¦ »ç¿ëÇÒ ¶§´Â ÀÌ °ªÀÌ Á¤È®ÇÏÁö ¾Ê´Ù.

 [ÁÖÀÇ] SpinLock Àº ÇöÀç Lock Ãß»ó Ŭ·¡½º¸¦ »ó¼Ó¹ÞÁö ¾Ê°íÀÖ´Ù.

 Creation date: (2001-07-25 ¿ÀÀü 2:54:42)

Version:
1.0
Author:
wegra(Lee, Boy-Youn)

Nested Class Summary
static class SpinLock.Test
          Å×½ºÆ®¿ë Ŭ·¡½º.
 
Constructor Summary
SpinLock()
          SpinLock constructor comment.
 
Method Summary
 void acquire(Condition condition, long timeout)
          ÇöÀç ½ºÇɶô¿¡ release() ¸Þ½ÃÁö°¡ ÀüÇØÁú ¶§±îÁö ºí·ÏÅ· µÈ´Ù.
 void release()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SpinLock

public SpinLock()
SpinLock constructor comment.

Method Detail

acquire

public void acquire(Condition condition,
                    long timeout)
             throws TimeoutException,
                    java.lang.InterruptedException,
                    java.lang.IllegalArgumentException
ÇöÀç ½ºÇɶô¿¡ release() ¸Þ½ÃÁö°¡ ÀüÇØÁú ¶§±îÁö ºí·ÏÅ· µÈ´Ù.

Throws:
TimeoutException - ŸÀӾƿôÀÌ ¹ß»ýÇϸé ÀÌ ¿¹¿Ü°¡ ¹ß»ýÇÑ´Ù.
java.lang.InterruptedException - ¸¸¾à ´Ù¸¥ ½º·¹µå¿¡¼­ ÀÎÅÍ·´Æ®¸¦ ÇßÀ» °æ¿ì
java.lang.IllegalArgumentException - timeout °ªÀÌ À½¼öÀÏ °æ¿ì ¹ß»ýÇÑ´Ù. Creation date: (2001-07-25 ¿ÀÀü 3:27:14)

release

public void release()