If by "correctness" you mean linearizability, you might want to look at
http://www.cs.ox.ac.uk/people/gavin.lowe/LinearizabiltyTesting/. There I present a testing framework that allows you to perform random operations on a concurrent datatype, record the history, and then check that the history is linearizable. My experience is that it's pretty good for finding bugs, an it's easy to use. My framework uses Scala; you should also be able to use it for testing Java.
Hope that helps.
Gavin