The real reward from gyms isn't XP or bragging rights — it's stardust and Pokécoins.
For every gym you hold during a 20 hour period (up to a maximum of 10 gyms), you can accumulate 500 stardust and 10 Pokécoins (worth roughly $0.10). The 20-hour period starts whenever you want it to. To begin, press the Collect button at the top right of the shop menu.
You can use this mechanic to take advantage of slow or otherwise inactive gyms. Remember that journal? Find out which gyms have moderate traffic, and change your route to capture those first. Place your strongest Pokémon as guards to protect and hold the gym as long as possible. Then make your way down the list to the least active gym, placing weaker Pokémon there. By the time you're at the bottom of your list, your best Pokémon should theoretically be holding the toughest gyms, and your throwaway fighters are merely claiming the inactive ones.
Once you're satisfied with what you've collected, press the collect button and cash in. Even as a solo player in an area where there is little to no presence from your chosen team, you can make a dent with this strategy.