Feeding time is an obvious place to start. Each time you're going to do something fun with your dog use the command or blow the whistle and straight away reward your dog for coming with a treat, bone, fuss, toy, or a game. As with all learning this needs to be generalised, which means changing the location and gradually building up the distractions.
A good tip in preparation for this training is to list all the distracting things your dog struggles with, and order them from easy to hard to ignore. Then work through them all, gradually getting more difficult in a variety of locations. Another important aspect of recall training is to avoid just putting your dog on the lead each time you call him, as he'll soon learn to avoid coming back to get a longer run in the park.
Recall training takes time and patience but it's great when you get there as you and your dog will enjoy walks so much more. Training classes might help with this and other issues you may have with your dog. Just ensure the trainer uses positive training methods.