EVTCg̒TJnہCSẴTCgɑ΂郍bN͕Kmۂł
̂ƂDbNlockmgrgnavigatorŊǗD

E͑Sēf[ɂčsDf[̓XbhłD

Ef[́Cʃm[hɑ΂đOzMf[^̍]C
܂̃m[hɏʃm[hŔ(Ƃăf[^폜)
C̃m[hɑ΂ēKpD

Eʃm[hɓ]ꂽf[^́Cʃm[hSyncQueuegĊǗD
ʃm[h͉ʃm[h̑SẴf[^ۗLD]āCʂɂق
f[^ۗLʂȂĎƂȂꍇD

Eʃm[hł́CSyncQueueɂāCʃm[hŏ񂪏dĂȂ
ǂDdĂ̂ɂẮCM̃m[hɑ΂āCf[^
폜閽߂𔭍sD

- - - - -

yxɂd@z

TbNȂǂ̏́CSyncQueueɂāCʂɊǗD
Hashtable commands = (Hashtable)dic.( "node name" );
SyncCommand command = commands.get( "url" );
ƂD

Ƃ΂URLCwww.yahoo.co.jpd邩łȂ𔻒肷ꍇCPɃ[v
܂킷D

boolean commandDuplicated = false;

SyncCommand[] list;
ArrayList rejectedCommands = new ArrayList();

for( int j = 0; j < list.length; j++ ) {
	synchronized( dic ) {
		Iterator i = dic.iterator();
		while( i.hasNext() ) {
			Hashtable commands = (Hashtable)i.next();
			SyncCommand command = (SyncCommand)commands.get( "www.yahoo.co.jp" );
			if( command != null ) {
				// 
				commandDuplicated = true;
				break;
			} else {
				// Ȃ̂œo^
				commands.put( "www.yahoo.co.jp", list[j] );
			}
		}
	}
	if( commandDuplicated ) {
		// d폜߂𔭍s
		rejectedCommands.add( new SyncQueue( ... ) );
	}
}

x̎dg݂ł́Cm[h͒̃m[hȊOǗȂD
ʏ킠m[hɐڑ鉺ʃm[h́C100𒴂邱ƂȂD
܂Chashɂ錟͂ȂȂł邱ƂC̃ASYŖȂƎvD


\z郊XN
Eʃm[h̐ɒ[ɑȂꍇ
Exɓ]鍷̐CɑȂꍇ
EsynchronizedubN


------------------------

LOCKꍇF
	̂ɂC폜߂ɕϊđM֖߂

UNLOCKꍇF
	bN񂪊ɑ݂ĂꍇCL[폜āCUNLOCKc
	 UNLOCKʂ̃m[h֑MKv邽

FORWARD_URLꍇF
	URLꍇC폜߂ɕϊđM֖߂

UNFORWARD_URLꍇF
	URLꍇCL[폜āCUNFORWARD_URLc
	 UNFORWARD_URLʂ̃m[h֑MKv邽߁D
