Witam, otóż napisałem sobie program, który przy użyciu wątków z czytuje ilość linii w plikach i zapisuje je do ArrayBlockingQueue i później ma je wyświetlać w konsoli nie wiem dlaczego zadziałał mi tylko raz a teraz tak jak by wcale nie wykonywał się foreach do przeglądania kolejki. Może ktoś zerknąć na kod. Byłbym wdzięczny.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.concurrent.BlockingQueue;
public class Kolekcja extends Thread{
private BlockingQueue<Integer> queue;
private FileReader file;
private String line;
private int ile = 0;
public Kolekcja(FileReader file, BlockingQueue<Integer> queue){
this.file = file;
this.queue = queue;
}
public void run() {
try {
BufferedReader in = new BufferedReader(file);
while((line = in.readLine()) != null){
ile++;
}
queue.offer(ile);
} catch (IOException e) {
}
}
}
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class Main {
public static void main(String[] arg) throws FileNotFoundException{
BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(3);
FileReader file = new FileReader("D:/PlikiJava/test.txt");
FileReader file2 = new FileReader("D:/PlikiJava/test2.txt");
FileReader file3 = new FileReader("D:/PlikiJava/test3.txt");
Kolekcja k1 = new Kolekcja(file, queue);
Kolekcja k2 = new Kolekcja(file2, queue);
Kolekcja k3 = new Kolekcja(file3, queue);
k1.start();
k2.start();
k3.start();
for(Integer wartosc : queue){
System.out.println("Ilosc linii w pliku: " + wartosc);
}
}
}