희망이 있으시면 도와주세요. 여러 스레드를 사용하여 텍스트 파일에 쓰는 프로그램을 만들어야합니다. 내가 필요로하는 것은 프로세서가 한 스레드 나 다른 스레드에 "관심"을주는 방식을 보여주기위한 것이므로 기본적으로 동시에 실행되는 모든 스레드와 동시에 작성해야합니다.멀티 스레드 텍스트 파일에 쓰기
여기 내 코드가 있습니다.
방법 1 : "for"를 사용하여 스레드를 만들고 시작하십시오.
public class ThreadGenerator {
public static void main(String[] args) {
File textFile = new File("c:\\threadLog.txt");
try {
PrintWriter out = new PrintWriter(new FileWriter(textFile));
for (int index = 0; index < 5; index++) {
ThreadCustom thread = new ThreadCustom("ID" + index, out);
thread.start();
}
out.close();
} catch (IOException ex) {
Logger.getLogger(ThreadGenerator.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
방법 2 : 나는 PrinterWriter 만들고,보고, 그것을 줄 수있는 만들기 및 각 스레드를 시작하는 수동
public class ThreadGenerator {
public static void main(String[] args) {
File textFile = new File("c:\\threadLog.txt");
try {
PrintWriter out = new PrintWriter(new FileWriter(textFile));
ThreadCustom thread1 = new ThreadCustom("ID1", out);
ThreadCustom thread2 = new ThreadCustom("ID2", out);
ThreadCustom thread3 = new ThreadCustom("ID3", out);
ThreadCustom thread4 = new ThreadCustom("ID4", out);
ThreadCustom thread5 = new ThreadCustom("ID5", out);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
thread5.start();
out.close();
} catch (IOException ex) {
Logger.getLogger(ThreadGenerator.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
이,
public class ThreadCustom extends Thread {
private String threadId;
private PrintWriter out;
public ThreadCustom(String threadId, PrintWriter out){
this.threadId = threadId;
this.out = out;
}
@Override
public void run(){
DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
Calendar cal = Calendar.getInstance();
this.out.println("Thread ID: "+this.threadId+" Enter Time: "+cal.getTime()+"\n");
for(int index = 0; index < 10000; index++){
this.out.println("Thread ID: "+this.threadId+" Current Time: "+cal.getTime()+"\n");
}
this.out.println("Thread ID: "+this.threadId+" Exit Time: "+cal.getTime()+"\n");
}
}
그래서 내 ThreadCustom 클래스입니다 모든 스레드가 동일한 PrinterWriter 객체를 사용하도록 ThreadCustom 객체를 만드는 매개 변수로 사용합니다 (Java의 모든 객체가 참조로 전달됩니다.)
나는 무엇을 기대합니까? 이 같은 것이
Thread ID: ID0 Enter Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID1 Enter Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID1 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID1 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID Exit Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID1 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID0 Current Time: Fri Jan 27 00:38:54 CLST 2012
Thread ID: ID1 Exit Time: Fri Jan 27 00:38:54 CLST 2012
또는 이와 비슷한 것입니다.
희망을 보내주세요.
미리 감사드립니다. 012.START()를 사용하면 .txt가 생성되지만 아무것도 쓰지 않지만 .start() 대신 .run()을 사용하면 .txt에 쓰지만 순차적으로 (ID0, ID1, ID3 등)