No, it means that you have to synchronize the threads so that they don't
insert the same data concurrently.
Perhaps a ConcurrentHashMap<MD5,token> where you would putIfAbsent(md5,new
Object()) when you start working on a new hash. If the token Object you get
back is not the same as you put in, you know that another thread is working
on that md5, which means this thread should move on to another one. When the
transaction is done you remove the md5 from the Map, to ensure that you
don't leak memory.

That's a simple "locking on arbitrary key" implementation. The reason you
cannot just do synchronized(md5) {...} is of course that your hashes are
computed, and thus will not be the same object every time, even though they
are equals().

For getting a performance boost out of writes, doing multiple operations in
one transaction will give a much bigger gain than multiple threads though.
For your use case, I think two writer threads and a few hundred elements per
transaction is an appropriate size.

-tobias

On Tue, Feb 1, 2011 at 9:06 PM, Massimo Lusetti <mluse...@gmail.com> wrote:

> On Tue, Feb 1, 2011 at 8:02 PM, Mattias Persson
> <matt...@neotechnology.com> wrote:
>
> > Seems a little weird, the commit rate won't affect the end result,
> > just performance (more operations per commit means faster
> > performance). Your code seems correct for single threaded use btw.
>
> Does it means that I cannot access the graphdb from multiple threads?
> That code is on a singleton service which expose the
> GraphDatabaseService through a method addNode() from where I run that
> code.
>
> The singleton service is called by a thread pool which can fire at
> maximum 20 concurrent threads.
>
> Any hints is really appreciated.
>
> Cheers
> --
> Massimo
> http://meridio.blogspot.com
> _______________________________________________
> Neo4j mailing list
> User@lists.neo4j.org
> https://lists.neo4j.org/mailman/listinfo/user
>



-- 
Tobias Ivarsson <tobias.ivars...@neotechnology.com>
Hacker, Neo Technology
www.neotechnology.com
Cellphone: +46 706 534857
_______________________________________________
Neo4j mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to