我正在创建线程来读取 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 循环中(逐行读取)我调用了 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();
}
}