J'ai un fichier CSV qui contient 10000 lignes. Je veux lire le fichier en utilisant N threads en veillant à ce qu'une ligne particulière est lue une seule fois. Par exemple. Si Thread-0 lit la ligne numéro 1, aucun autre thread ne doit relire cette ligne particulière et simultanément les autres threads traitent les lignes restantes. La tâche est que chaque ligne ne doit être traitée qu'une seule fois.Lire une ligne une seule fois en utilisant le multithreading
Pouvons-nous mettre en œuvre cette approche. Exemple de code serait vraiment apprécié. Merci beaucoup!
public class FileReaderThread implements Runnable {
@Override
public void run() {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("C://Users/mR.cOol/Desktop/Input.csv"));
String line = "";
try {
while ((line = br.readLine()) != null) {
synchronized (line) {
System.out.println("In Synchronized block" + " " + Thread.currentThread().getName());
String arr[] = line.split(",");
System.out.println(arr[0]);
}
}
} catch (IOException e) {
}
} catch (Exception e) {
}
}
}
public class MainClass {
private static final int workerThread = 2;
public static void main(String[] args) {
Thread thread[] = new Thread[workerThread];
for(int i=0;i<workerThread;i++) {
thread[i] = new Thread(new FileReaderThread());
thread[i].start();
}
}
}
Nous pourrions. Mais nous refusons généralement de le faire sur une entrée comme celle-ci - comme vous ne montrez aucun effort que vous avez essayé de résoudre vous-même. Nous ne faisons pas vos devoirs pour vous, vous savez. – GhostCat
@GhostCat Veuillez trouver l'exemple de code. –
A) ne jamais aller avec des blocs de catch vides B) ce que vous demandez n'a simplement pas beaucoup de sens: un lecteur ne propose que des méthodes de lecture. Donc, votre idée d'avoir plusieurs threads travaillant avec le même lecteur n'ajoute aucune valeur, bien au contraire - cela rend les choses beaucoup plus compliquées que nécessaire. Au lieu de cela: lisez d'abord toutes les lignes dans une liste, puis faites en sorte que chaque processus thread fasse partie de cette liste. Et pour le compte rendu: vous avez perdu environ 10% de la solution, on dirait que vous voulez que nous réfléchissions pour vous. – GhostCat