Javaでファイルを読み取るスレッドを作成しています。2 つのスレッドを作成すると、各スレッドはファイル全体を読み取りますが、ファイルの異なる部分を読み取る必要があります。sleep()、join()、yield() を入れてみましたが、それらを含めた後は読み取りが遅くなります。
public class MyClass implements Runnable {
Thread thread;
public MyClass(int numOfThreads) {
for(int i=0;i < numOfThreads; i++) {
thread = new Thread(this);
thread.start();
}
}
public void run() {
readFile();
}
}
readFile では、while ループ (1 行ずつ読み取る) で、sleep()/yield() を呼び出しました。スレッドがファイルの異なる部分を読み取れるようにするにはどうすればよいですか?
ファイルの読み取りに使用されるメソッドで更新されました...
public synchronized void readFile() {
try {
String str;
BufferedReader buf = new BufferedReader(new FileReader("read.txt");
while ((line = buf.readLine()) != null) {
String[] info = str.split(" ");
String first name = info[0];
String second name = info[1];
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
} catch (IOException e) {
System.out.println("Error : File not found");
e.printStackTrace();
}
}