Entendiendo los generadores en Python

Estoy leyendo el libro de cocina de Python en este momento y actualmente estoy mirando los generadores. Me está resultando difícil conseguir mi cabeza redonda.

Como vengo de un fondo de Java, ¿hay un equivalente de Java? El libro hablaba de 'Productor / Consumidor', pero cuando escucho eso, pienso en enhebrar.

¿Qué es un generador y por qué lo usarías? Sin citar ningún libro, obviamente (a menos que pueda encontrar una respuesta simple y decente directamente de un libro). Tal vez con ejemplos, si te sientes generoso!