Software Transaction Memory (STM) is an alternative synchronization method to the traditional lock-based schemes. In an STM system, the contention manager(CM) decides what action to take when a conflict occurs. CM is crucial to the performance of STM systems. However, the performance of existing CMs is sensitive to the transaction workloads and STM configurations. A static policy is therefore unsatisfactory. In this paper, we argue that adaptive contention manager (ACM) is necessary and feasible. We further present an ACM policy that can adaptively choose a suitable CM during run-time. We prove that our adaptation strategy preserves live-lock (starvation) freedom as long as the pool of CMs to adapt from contains at least one live-lock free (starvation free) CM. Experimental results demonstrate that our approach can choose proper CMs and achieves higher average throughput than existing static CM strategies.