Hallo,
ich bin noch sehr weit am Anfang meiner Javakarriere und bin mir bewusst, dass es sicher bessere Methoden gibt um die Logic in Code umzuseten. Bis jetzt bin ich froh, dass erst einmal alles so funktioniert wie ich es mir vorgestellt habe.
Ich lese Daten aus einer CSV Datei aus, welche Regelmäßig geupdated wird. Jede Information bekommt einen Index zugewiesen und wird in einer Hashmap gespeichert. Wie kann ich jetzt die Hashmap weiter mit Daten füllen und gleichzeitig in einem anderen Thread auf diese zugreifen?
Ich muss um den run befehl noch einen Thread aufbauen, aber wie bekomme ich zugrif auf das "data" object? Dies existiert ja nur in der run Methode und wenn ich irgendetwas zurückgeben würde müsste die Funktion ja abgebrochen werden.
Danke
ich bin noch sehr weit am Anfang meiner Javakarriere und bin mir bewusst, dass es sicher bessere Methoden gibt um die Logic in Code umzuseten. Bis jetzt bin ich froh, dass erst einmal alles so funktioniert wie ich es mir vorgestellt habe.
Ich lese Daten aus einer CSV Datei aus, welche Regelmäßig geupdated wird. Jede Information bekommt einen Index zugewiesen und wird in einer Hashmap gespeichert. Wie kann ich jetzt die Hashmap weiter mit Daten füllen und gleichzeitig in einem anderen Thread auf diese zugreifen?
Ich muss um den run befehl noch einen Thread aufbauen, aber wie bekomme ich zugrif auf das "data" object? Dies existiert ja nur in der run Methode und wenn ich irgendetwas zurückgeben würde müsste die Funktion ja abgebrochen werden.
Java:
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class ReadFile {
public static void main(String args[]) throws InterruptedException
{
ReadFile obj = new ReadFile();
obj.run();
}
public void run() throws InterruptedException {
int barCount = 0;
BufferedReader br = null;
String line = "",cvsSplitBy = ",";
Map<Integer,String> data = new HashMap<Integer,String>();
String csvFile = "/files/Info.csv";
try {
br = new BufferedReader(new FileReader(csvFile));
while(true)
{
while((line = br.readLine()) != null) {
// Vergangene Daten auswerten.
String[] items = line.split(cvsSplitBy);
data.put(barCount,items[1]);
System.out.println(line);
barCount++;
}
while((line = br.readLine()) == null) {
// Auf neue Daten Warten
Thread.sleep(30000);
}
// Neue Daten verarbeiten.
data.put(barCount,items[1]);
barCount++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
Danke