ThreadSafe 1.2: Next Generation Static Analysis for Java Concurrency

Edinburgh, 21 August 2013

Contemplate, a UK spin-out company from the University of Edinburgh, announces ThreadSafe 1.2, a tool for helping Java developers to avoid mistakes and inefficiencies when building applications with concurrency.

Contemplate CEO Derick James comments: “Our latest release is a significant milestone for ThreadSafe. The deep analysis capability in our previous releases is being recognized as a key tool in removing application risk. With our latest release we have added further powerful investigation support to help the users understand often subtle and complex code issues. Customer feedback has been hugely positive about the increased ability to pinpoint flaws in their code.”

ThreadSafe has previously been available only to selected partners. Version 1.2 adds new features and opens the technology to a wide range of end users.

Programming correctly with concurrency is a major challenge. Even the most experienced programmers find it difficult. Some of the most high-profile software failures in the last few years have been due to concurrency errors. Yet using concurrency is essential to exploit modern multi-core architectures.


ThreadSafe identifies application risks and security vulnerabilities associated with concurrency problems in Java code. For example:

  • Race conditions which lead to incorrect or unpredictable behaviour that is difficult to reproduce in a debugger.
  • Deadlocks caused by circular waits between threads waiting for shared resources.
  • Unpredictable results caused by incorrect handling of concurrent collections, bad error handling, or mixed object synchronization.
  • Performance bottlenecks caused by incorrect API usage, redundant synchronization and unnecessary use of shared mutable state.

ThreadSafe uses advanced static analysis, so potential issues in code can be discovered without running code. Static analysis is an essential technique to harness the complexity of concurrent code, because it is impossible to test every pattern of concurrent thread execution and every data value. Problems which might only be seen in deployment are eliminated much earlier and more cheaply.

Identifying problems is only half of the story. ThreadSafe includes unique explanation and debugging aids that allow programmers to find the root cause of problems. For example, ThreadSafe’s Accesses View shows how locks are used in a program, allowing a developer to swiftly navigate between critical regions and find the calling contexts where locks are acquired.

ThreadSafe has special understanding of libraries and frameworks which have concurrent behaviour and multiple code entry points, including the standard java.util.concurrent library. Using good frameworks can help to build safe concurrent applications, but it is still possible to make fundamental mistakes. ThreadSafe detects many buggy uses of concurrent collections classes, for example.


Most current static analysis tools are general purpose and catch a range of surface-level problems. Contemplate’s ThreadSafe uses deeper analysis technology, tailored towards very precise identification of concurrency problems. ThreadSafe finds concurrency problems that are missed by other static analysis tools and achieves a manageably low false positive rate. For findings that require close inspection, the explanation aids allow the developer to efficiently investigate and annotate for future reference.

Contemplate partners with clients to provide additional custom analysis and framework support that is specific to particular projects and organisations. For example, ThreadSafe has been used on large Java projects in some of the major investment banks. Examining millions of lines of code automatically, ThreadSafe helped reduced latent risks by finding hidden concurrency faults in trading applications, preventing disasters waiting to happen.


ThreadSafe 1.2 is integrated into the Eclipse IDE, to allow developers to interact with the tool directly while coding. It can also be run via an integration into the SonarQube code quality platform. ThreadSafe 1.2 runs on Windows, Linux, and OS X.

Further Information and Availability

For examples of what ThreadSafe can do, read Contemplate’s briefing Maintaining safe concurrent code with ThreadSafe. To watch ThreadSafe in use in Eclipse, visit Contemplate’s website,

To find out about trying ThreadSafe in your organisation, contact Contemplate using the details at