In most real-world environments, scheduling is an ongoing reactive process where the presence of a variety of unexpected disruptions is usually inevitable, and continually forces reconsideration and revision of pre-established schedules. Many of the approaches developed to solve the problem of static scheduling are often impractical in real-world environments, and the near-optimal schedules with respect to the estimated data may become obsolete when they are released to the shop floor. This paper outlines the limitations of the static approaches to scheduling in the presence of real-time information and presents a number of issues that have come up in recent years on dynamic scheduling. The paper defines the problem of dynamic scheduling and provides a review of the state-of-the-art of currently developing research on dynamic scheduling. The principles of several dynamic scheduling techniques, namely, heuristics, meta-heuristics, multi-agent systems, and other artificial intelligence techniques are described in detail, followed by a discussion and comparison of their potential.