Try commons proxy! Sent from tablet device. Please excuse typos and brevity. On Mar 2, 2012 7:01 PM, "Marco Speranza" <marcospera...@apache.org> wrote:
> >> > >> furthermore there is another problem: with handler is not possible to > use correctly synchronization block like this > >> > >> ==== > >> Graph g = CommonsGraph.synchronize(g_); > >> ... > >> synchronized(g) { > >> for ( BaseLabeledVertex v2 : g.getVertices() ) > >> { > >> // do somethings > >> } > >> } > >> ==== > > > > sorry I don't understand what you meant/intend to do > > I'm trying to explain better. the method getVertices return an Iterator. > In a multi-thread environment you have to ensure that during the 'for' > execution the [graph] data structure remains consistent. > Also for java collection is the same [ > http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#synchronizedCollection(java.util.Collection) > ] > > So if we use a proxy/handler there is no way to "export" the mutex/lock > variable used into handler class. > > In our CommonsGraph the variable this.lock is private and is non possible > to export out of the method, so the user can not utilize the lock to > synchronize his block. > > === > public Object invoke( Object proxy, Method method, Object[] args ) > throws Throwable > { > if ( synchronizedMethods.contains( method ) ) > { > try > { > synchronized ( this.lock ) > { > return method.invoke( synchronizedMethods, args ); > } > } > catch ( InvocationTargetException e ) > { > throw e.getTargetException(); > } > } > return method.invoke( synchronizedMethods, args ); > } > === > > ciao > > -- > Marco Speranza <marcospera...@apache.org> > Google Code: http://code.google.com/u/marco.speranza79/ > > Il giorno 03/mar/2012, alle ore 00:45, Simone Tripodi ha scritto: > > >> furthermore there is another problem: with handler is not possible to > use correctly synchronization block like this > >> > >> ==== > >> Graph g = CommonsGraph.synchronize(g_); > >> ... > >> synchronized(g) { > >> for ( BaseLabeledVertex v2 : g.getVertices() ) > >> { > >> // do somethings > >> } > >> } > >> ==== > > > > sorry I don't understand what you meant/intend to do > > > >> I really think that a synchronized wrapper it's the best solution. > >> > >> WDYT? > > > > they sucks because we have to keep them updated while , but if there > > are not alternatives... > > -Simo > > > > http://people.apache.org/~simonetripodi/ > > http://simonetripodi.livejournal.com/ > > http://twitter.com/simonetripodi > > http://www.99soft.org/ > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > >