I am reading a csv file from a location.
Could you please tell me how can I stop the Producer Thread and Consumer Thread incase file is not found in this case ?
Below is my program which creates two threads, Producer and Consumer Threads to read the data from the file
package com.util;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PipedReader;
import java.io.PipedWriter;
import au.com.bytecode.opencsv.CSVReader;
public class TestProgram {
public static void main(String args[]) {
final String startToken = ",Nifty 50 Gainers";
final String endToken = "50 Losers";
final PipedWriter pipedWriter = new PipedWriter();
PipedReader pipedReaderTmp = null;
try {
pipedReaderTmp = new PipedReader(pipedWriter);
} catch (IOException e) {
}
final PipedReader pipedReader = pipedReaderTmp;
// Consumer
new Thread(new Runnable() {
@Override
public void run() {
try {
CSVReader csvReader = new CSVReader(pipedReader);
while (true) {
String[] line = csvReader.readNext(); // blocks until the next line is available
if (line == null)
break; // end of stream has been reached
if (line != null && line.length > 3) {
String indices_name = line[1];
if (indices_name != null) {
System.out.println(indices_name);
}
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
// Producer
new Thread(new Runnable() {
@Override
public void run() {
try {
BufferedReader br = new BufferedReader(new FileReader(
"C:\\Users\\ravikiranv\\Downloads\\MA050116.csv"));
String line = null;
while ((line = br.readLine()) != null) {
if (startToken.equals(line))
break;
}
while ((line = br.readLine()) != null) {
if (line.contains((endToken))) {
break;
} else {
pipedWriter.write(line + '\n');
}
}
pipedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}