我正在创建线程以读取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();
}
}