Contemplate's ThreadSafe version 1.3.1 featuring a new deadlock detection rule for finding code that can deadlock because of the order that locks are acquired is now available. When deadlocks are detected, ThreadSafe reports which locks are held for each lock acquisition. On the right is an example of this detection using their Eclipse plugin.
InfoQ reported on ThreadSafe's first public release in August 2013, pointing out at that time that ThreadSafe did not catch everything:
InfoQ purposely introduced a potential "deadly-embrace" deadlock into the codebase, and ThreadSafe did not locate it.
With the 1.3.1 release, this is now fixed and ThreadSafe now finds deadlocks arising from circularity in lock dependencies.
The release includes rule-accuracy improvements, many minor improvements to the Eclipse plug-in and Command Line Interface, and six new rules:
- Deadlock due to circularity in lock dependencies.
- Lock not released when method throws an exception
- Synchronizing on a collection view
- No lock held while iterating on a synchronized collection view.
- Iterating over a synchronized collection while holding a lock on the view.
- Iterating over a collection view whilst not locking on the backing collection.
To learn more about ThreadSafe, InfoQ sat down with Contemplate Founder and CEO, Don Sannella.
InfoQ: You first released ThreadSafe in August of 2013. How has adoption been?
Adoption really started to take off once we started making free 2-week trials available in November. Since then, we've seen adoption both by individual developers and by teams who are concerned about maintaining high-quality code, in a wide range of industries.
InfoQ: You added Deadlock Detection in 1.3.1, what's coming in the next release?
ThreadSafe 1.3.2 is faster, uses memory more efficiently for use with very large projects, and improves support for legacy Java versions.
InfoQ: Which usage pattern are you seeing most: Eclipse, Sonar or command line?
Eclipse and Sonar are currently most popular. The command line version is new in 1.3 and we expect interest to increase because it can be used either on a desktop or on a build server.
InfoQ: Are you planning on releasing a plugin for IntelliJ? What about NetBeans?
We would love to do a plugin for IntelliJ, but for now we are focusing on our Eclipse, Sonar and command line products. For users of other IDEs, the command line version provides similar functionality.
InfoQ: Are there any plans to offer a free license of ThreadSafe to open source projects?
We have already provided free licenses on request to a couple of open source projects and for use in teaching. We welcome further requests.
InfoQ: Are you working on any additional products, or do you plan to remain focused on ThreadSafe?
For now we are focusing on ThreadSafe and further improvements to its coverage and accuracy, including building in more knowledge of Android.
For more information about ThreadSafe, see Contemplate senior software engineer Robert Atkey's article, Discover and Diagnose Java Concurrency Problems Using Contemplate's ThreadSafe, and our coverage last year of ThreadSafe's first public release.
There's also a brief Introducing Contemplate ThreadSafe YouTube video that provides a quick overview of the product.
ThreadSafe 1.3.2 is expected to be released within the next week. You can request a trial of the latest version of ThreadSafe on their website.
Community comments
why focus on eclipse??
by Ryan Gardner,
Re: why focus on eclipse??
by Vikram Gupta,
Re: why focus on eclipse??
by Don Sannella,
why focus on eclipse??
by Ryan Gardner,
Your message is awaiting moderation. Thank you for participating in the discussion.
"We want to make a commercial tool for developers... And sell it to people to cheap to use a decent IDE"
Re: why focus on eclipse??
by Vikram Gupta,
Your message is awaiting moderation. Thank you for participating in the discussion.
There's at least one decent IDE that's free, no reason to be stuck in Eclipse hell
Re: why focus on eclipse??
by Don Sannella,
Your message is awaiting moderation. Thank you for participating in the discussion.
Contemplate is a startup and we need to focus on one IDE. We picked Eclipse following discussions with early ThreadSafe adopters in investment banking, all of whom were using Eclipse, and all of whom could have paid for IntelliJ if they had wished to. We would love to support IntelliJ too, but in the meantime you can use the command-line version of ThreadSafe.
While I'm here: google "Detecting Deadlocks without Drudgery" for much more about finding deadlocks with and without ThreadSafe.