Try commons proxy!
Sent from tablet device. Please excuse typos and brevity.
On Mar 2, 2012 7:01 PM, "Marco Speranza" <[email protected]> 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 <[email protected]>
> 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: [email protected]
> > For additional commands, e-mail: [email protected]
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>