Java에서 파일을 읽는 스레드를 만들고 있습니다. 2 개의 쓰레드를 만들 때 각 쓰레드는 파일의 다른 부분을 읽는 동안 전체 파일을 읽습니다. 나는 sleep(), join(), yield()를 넣으려고했으나 그들을 포함시킨 후에는 읽기를 느리게하고있다. 나는 잠을 호출 (라인으로 라인을 읽기) while 루프에서 ReadFile을에서 Java에서 파일을 읽는 멀티 스레딩
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();
}
}
,()/수율(). 스레드가 파일의 다른 부분을 읽게하려면 어떻게해야합니까?
파일을 읽는 데 사용 방법 업데이트 ...
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();
}
}
어디 파일을 읽고 코드? – MadProgrammer
public synchronized void readFile() { 시도 { 문자열 str; BufferedReader buf = new BufferedReader (새 FileReader ("read.txt"); \t while ((line = buf.readLine()) while!= null) \t { \t String [] info = str.split (""); \t 문자열 이름 = 정보 [0]; \t 문자열 second name = 정보 [1]; \t 시도 { \t \t \t \t \t \t \t에 Thread.sleep (100); \t} \t \t \t \t 캐치 (예외 : InterruptedException 전자) \t \t \t \t { \t \t \t \t} \t \t \t} \t \t 캐치 (IOException이 전자) { \t \t \t \t에서 System.out.println ("오류 : 파일을 찾을 수 없습니다"); \t \t \t \t e.printStackTrace(); \t \t \t }} 다음을 사용할 수 – user1690394
[RandomAccessFile의 (http://docs.oracle.com/javase/7/docs/api/java/io/RandomAccessFile.html) 파일 내의 임의의 위치에서 읽어야 그러나 "선들"을 이해하지는 못합니다. 줄을 찾으려면 줄 바꿈은 데이터의 어느 곳에서나있을 수 있으므로 전체 파일을 스캔해야합니다. 그것이 구조화 된 데이터가 아니라면. –