¿Hay una manera elegante de procesar una secuencia en fragmentos?

Mi escenario exacto es insertar datos a la base de datos en lotes, por lo que quiero acumular objetos DOM y luego cada 1000, vaciarlos.

Lo implementé poniendo código en el acumulador para detectar la plenitud y luego el vaciado, pero eso parece incorrecto: el control de vaciado debería provenir de la persona que llama.

Podría convertir la secuencia a una Lista y luego usar subList de forma iterativa, pero eso también parece torpe.

¿Hay una manera ordenada de actuar cada n elementos y luego continuar con la secuencia mientras solo se procesa la secuencia una vez?