This isn't a single word, but I'd probably write that John "can't stop his mind from running over the events of the day." "Going over" also works, though it sounds slightly more voluntary to me than "running over."
Based on the tone of the example, I also thought of "perseverate," a technical term from psychology meaning to get involuntarily stuck on the same compulsive thought pattern or behavior (source: New Oxford American Dictionary and my experience working at a nonprofit for teens and adults on the autism spectrum, where we use the word daily). "Perseverate" probably isn't a good choice for you, however, because a) it's jargon, b) it applies equally to behavior as well as to thoughts, and c) it applies only to repetitive, compulsive thoughts. Also, while perseverative thinking is often associated with anxiety, it doesn't have to be, and anxiety seemed central to what you were looking for.