The problem with checking the renewer event queue directly is that the queue can be empty but processing has not yet completed. Threads can still be executing the last events, having just pulled them from the queue to leave it empty. Therefore the test is still racy. A simpler approach would be to just keep checking if the tokens are equal. If they aren't then sleep for a bit then try again, up to some limit of time to keep checking.
By the way, we should not sleep an entire second between checks. All those seconds of waiting add up across all of our tests doing it, making it take significantly longer to run them overall. We should be sleeping for only 10ms or so. That's still a large amount of time for modern processors to get work done while we're waiting, and we still won't be spinning non-stop on the CPU.