¿Qué tipo de archivo es este? ¿Por qué necesitas alimentarlo con más hilos? Depende de las características (no sé mejor palabra para ello) del uso del archivo.
La transferencia de un archivo desde varios lugares en la red (abreviado: Torrent-like)
Si va a transferir un archivo existente, el programa debe
- tan pronto, como se pone conocer la tamaño del archivo, créelo con contenido vacío: esto evita un error posterior fuera del disco (si no hay espacio suficiente, se activará en la creación, antes de descargarlo), también ayuda al rendimiento;
- si organiza bien la transferencia (y por qué no), cada subproceso será responsable de una parte distinta del archivo, por lo que las escrituras serán distintas,
- aunque de alguna manera dos subprocesos elijan la misma parte del archivo, no causará ningún error, ya que escriben los mismos datos para las mismas posiciones de archivo.
Al añadir bloques de datos a un archivo (abreviado: tala)
Si los hilos simplemente añade información fija o varia-longitud en un archivo, se debe utilizar un hilo común. Debe usar un buffer de escritura relativamente grande, para que pueda servir a los hilos del cliente de manera rápida (solo tomando las cuerdas), y eliminarlo de la programación óptima y del tamaño del bloque. Debe usar un disco dedicado o incluso una computadora.
Además, puede haber varios problemas de rendimiento, es por eso que hay servidores de registro alrededor, incluso los comerciales caros.
de lectura y escritura de tiempo aleatorio, posición aleatoria (abreviado: base de datos)
Se requiere un diseño complejo, con mutex etc., nunca he hecho esto un poco, pero puedo imaginar. Pídale algunos trucos a Oracle :)
Sí, pueden hacerlo, pero realmente quiere evitar que lo hagan exactamente al mismo tiempo. Es necesario que haya algo de coordinación. Si está hablando de Bittorrent, creo que funciona ensamblando bloques de compensaciones conocidas en un archivo de tamaño conocido. Eso no se puede llamar de forma secuencial o paralela, es más de "acceso aleatorio". – Thilo
Pregunta similar: http://stackoverflow.com/questions/6206472/what-is-the-best-way-to-write-to-a-file-in-a-parallel-thread-in-java – Vadzim