The moose likes Developer Certification (SCJD/OCMJD) and the fly likes [Lock] Strange pattern Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Professional Certification » Developer Certification (SCJD/OCMJD)
Reply Bookmark "[Lock] Strange pattern" Watch "[Lock] Strange pattern" New topic
Author

[Lock] Strange pattern

Olivier Gregoire
Greenhorn

Joined: Dec 30, 2009
Posts: 12
Hi,

My current tests on the locking system always shows the same pattern, and I don't know if it's right or wrong: all updates, and deletes on the record 1 are done at the end of the test, except one or two. I've tested it and seen it on two different systems (one Windows, one Linux).

The problem is that I really don't know how to interpret this. Does anyone have the same pattern?

Here's my test method adapted from the one present in the FAQ:



And here's a sample of the test result.

Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 3820

Hi Olivier,

I would expect that a deleted record will not be updated, I would expect a RNFE being thrown instead.

Kind regards,
Roel


SCJA, SCJP (1.4 | 5.0 | 6.0), SCJD
http://www.javaroe.be/
Olivier Gregoire
Greenhorn

Joined: Dec 30, 2009
Posts: 12
That's not an issue right now, since all methods are empty, except about the lock.

Regarding the strange pattern, is this normal? Or should I already have to correct the lock system? I prefer to work one thing at a time, and started with the lock.
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 3820

Hi Olivier,

Sorry, didn't know about the empty methods

I think it's a bit weird, but it could just be fine. Maybe you have to shuffle your list with threads a bit and expirement a bit with it

Kind regards,
Roel
Olivier Gregoire
Greenhorn

Joined: Dec 30, 2009
Posts: 12
Indeed, you couldn't know about the empty methods. I'll try to be clearer next times.

I'll try and use the shuffle but I don't really think it's gonna change much, since these are threads, and the execution is non-predictable, even if we add randomness.
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 3820

Olivier Gregoire wrote:since these are threads, and the execution is non-predictable, even if we add randomness.
That's true of course, but it is strange that all these calls are at the end, but it could be completely valid behavior. Hard to say of course without any explanation (pseudo-code) how you make your Data class thread-safe. Are you already using lock/unlock methods?

Kind regards,
Roel
Olivier Gregoire
Greenhorn

Joined: Dec 30, 2009
Posts: 12
The implementation that I chose for this is the basic Lock implementation. It is contained directly in my Data class. But now with the issue I'm facing, I'm thinking about the default implementation of the ReadWriteLock. I'll implement the other lock too and check if everything is ok.

Roughly, I perform the lock only in the test classes used in my JUnit.

It's simply using the DB api:


I don't really know how I can go deeper in the explanation regarding the lock system itself without copy/pasting the code. All I could say without revealing much is that my method pattern is the following:


If I already wrote too much, please tell me so I remove the code.
Roel De Nijs
Bartender

Joined: Jul 19, 2004
Posts: 3820

Hi Olivier,

Your pseudo code snippets seem ok to me. Although I'm not a big fan of the return; statement in the unlock-method. I didn't use the fancy classes from the concurrent package, I just used synchronized (on each method), wait and notify. But I believe most people use a ReadWriteLock.

Kind regards,
Roel
 
IntelliJ Java IDE
 
subject: [Lock] Strange pattern
 
Threads others viewed
Magic Square water retention
Locking & Synchronization on Bodgitt & Scarper
question about Doung Lea's thread pool
Thread names??
Data Class Locking Test Doublecheck
jQuery in Action, 2nd edition

cast iron skillet 49er

more from paul wheaton's glorious empire of web junk: cast iron skillet diatomaceous earth rocket mass heater sepp holzer raised garden beds raising chickens lawn care CFL flea control missoula heat permaculture