Adaptive Software Transactional Memory: Dynamic Contention Management