JSure for Concurrency
Java on multi-core -- speed with safety
JSure is a model-based static analysis tool that helps developers answer this question--
"Are my threads accessing shared state in a safe way?"
JSure provides positive assurance (sound analysis, not rule-based) that correct locks are held when shared state is accessed. This enables programmers to develop confidence that their code is "thread safe" -- it satisfies state consistency requirements. Because it is composable, the JSure analysis is scalable to the largest Java systems, and has been proven on large existing code bases. It is supported by a lightweight developer-friendly annotation language that is compatible with JSR 305. JSure is an IDE plug-in, living with developers to provide rapid feedback concerning locking policies as code is written. JSure acts as a safety net as developers work to aggressively parallelize their code for multi-core processors, removing the fear of introducing hard-to-debug race conditions.
Flashlight Dynamic Analysis
Discover potential race-conditions and deadlocks
When developers are in the dark about why their application is experiencing intermittent failures, poor performance, or data corruption, Flashlight is a "special-purpose" runtime profiler that can provide visibility into concurrency issues within the app and illuminate the path to root causes. Flashlight monitors thread behavior, lock usage, and lock contention as threads access shared state over time. Flashlight then allows rich queries into the resulting multi-dimensional data set to determine where potential race-conditions, deadlocks, and performance bottlenecks exist in the code. This helps developers of threaded code better understand the realities of the runtime behavior of their code.