2009-09-07 2 views
0

J'ai mis en œuvre un flux d'entrée de collecte de fichiers multiples capable de lire et de combiner des données provenant de segments de fichiers précédemment dispersés. Toutefois, la version actuelle utilise RandomAccessFile avec ExecutorService de taille fixe et avec beaucoup de surcharge CPU. Je souhaite éviter ces threads d'E/S et effectuer une approche basée sur un seul sélecteur threadé. Malheureusement, FileChannel (ou Path.newByteChannel() de JDK7 n'est pas sélectionnable. Y at-il un moyen de faire cette collecte de données d'une manière NIO?Rassemblement de plusieurs fichiers à l'aide de canaux de fichiers sélectionnables

+0

Pourriez-vous essayer d'affiner la cause de la surcharge du processeur en premier? – skaffman

+0

Malheureusement pas. VisualVM ne fonctionne pas sur mon Win7 (jette un NPE quelque part profond) – akarnokd

+0

Ne pouvez-vous pas faire défiler vos canaux de fichiers à tour de rôle et utiliser des lectures bloquantes? – wds

Répondre

0

Regardez le AsynchronousFileChannel de jdk7.

0

Réponse très tardive, mais pourquoi doit-elle être sélectionnable? Il disperse des lectures et collecte des écritures, et les fichiers sont toujours prêts pour la lecture et l'écriture. Alors pourquoi Selectable?

Questions connexes