gpt4 book ai didi

java - java中使用线程读写文件

转载 作者:行者123 更新时间:2023-11-30 06:10:31 28 4
gpt4 key购买 nike

我试图从一个文件中读取 5000 个整数,并使用两个线程将这些整数写入另一个文件。这是我的代码:

public class data {
int value;
}
import java.util.*;
import java.io.*;
public class oku implements Runnable {

data d;
public oku(data d){
this.d=d;
}

public synchronized void run(){
File f= new File("/home/ayyuce/Desktop/ali.dat");
try {
Scanner sc= new Scanner(f);
while(sc.hasNextInt()) {
//synchronized(d) {
d.value=sc.nextInt();
}
//}
sc.close();
} catch(Exception ex){ }
}

}
import java.util.*;
import java.io.*;
public class yaz implements Runnable {
data d;

public yaz(data d) {
this.d=d;
}

public synchronized void run() {
File f= new File("/home/ayyuce/Desktop/veri.dat");
try {
PrintWriter p = new PrintWriter(f);
for(int i=0; i<5000;i++){
//synchronized(d){
p.println(d.value);
//System.out.println(d.value);
}
//}
p.close();
} catch(Exception ex){ }
}
}
public class main_class {
public static void main(String[] args) {
data d= new data();
//d.value=100;
oku o= new oku(d);
yaz y= new yaz(d);
Thread t1= new Thread(o);
Thread t2= new Thread(y);
t1.start();
t2.start();
}
}

我使用了生产者消费者算法。它从文件读取并将整数写入数据类中的值,然后从数据类读取,写入文件。但它无法正常工作。它将零写入文件。我的代码有什么问题?

谢谢

最佳答案

如果是我,我会创建一个单独的对象来跟踪文件的读取和写入。

public class fileHandler{
File f;
printWriter p

public void fileHandler(String filename){
f = new File(filename);
p = new printWriter(f);
}

public void write(String str){
synchronized(p){
p.println(str);
}
}
}

并且只需从每个线程单独调用 write 即可。这样就不会有多个线程同时写入同一个文件。

关于java - java中使用线程读写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50339723/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com