This paper provides examples of multicore optimization techniques and discusses how developers can use visualization tools to characterize multicore behavior and measure performance improvements. The paper explores how developers can use threading models to create multiple concurrent tasks and parallel processing; it also discusses how to minimize lock contention by using mutexes to engineer the optimal level of lock granularity.