For a multi-unit system subject to stochastic degradation failure, the maintenance performed on any component usually incurs a common system setup cost, regardless of the number of components being maintained. Therefore, whenever a component undergoes the maintenance, there is an opportunity to conduct preventive maintenance (PM) on other components even though their degradation does not exceed their own PM thresholds. Thus, simultaneously conducting PM on multiple components can pontential reduce total setup costs, realizing maintenance saving over a long run. Though multi-component maintenance planning has received much attentions in the past decades, most decision models are built upon individual components, such as block-based maintenance and periodic inspection/replacement policy. In this paper, we propose an opportunistic maintenance policy that adaptively adjusts the inspection interval, and the thresholds of PM and opportunistic maintenance based on the degradation of all components. A simulation model is developed to minimize the long-run cost rate by considering the costs associated with inspection, setup, and maintenance actions. Finally, the numerical examples are provided to demonstrate how to optimize the opportunistic maintenance threshold under different setup cost, PM overhead, and reliability parameters.