Today, multi-core/multi-processor hardware has become ubiquitous, which puts us at a fundamental turning point on software development. However, developing concurrent programs is difficult. Concurrency introduces the possibility of errors that do not exist in sequential programs. This book covers the state-of-the-art research achievements on detecting concurrency errors such as deadlock, race condition, and atomicity violation and also presents several aggressive performance optimization techniques for hybrid program analysis.