我写了一个Runnable类
private static class Processing implements Runnable {
private static File file;
private static byte[] message;
public Processing ( File f, byte[] m ){
this.file = f;
this.message = m;
}
public void run(){
WriteToFile( file , message );
... other processing....
}
private static void WriteToFile( File f , byte[] msg ){
FileOutputStream fs = null;
try {
fs = new FileOutputStream( f ) ;
fs.write( msg );
fs.flush();
fs.close();
}catch (Exception e){
e.printStackTrace();
}
}
在主要班级
public class MainClass{
public void somemethod(){
....
( new Thread(new Processing ( <somefile> , <somebytes> ))).start();
....
}
}
我的问题是
如何在代码中模拟1000个用户?是吗
for (int i = 0 ; i<1000 ...){
( new Thread(new Processing ( <somefile> , <somebytes> ))).start();
}
感谢
答案 0 :(得分:3)
对于Q1:看起来没问题,但请记住,您始终关闭finally
块中的流,因为写入操作可能会失败,这可能会使您的文件处理悬空。
对于Q2:这就是它的完成方式,只要你没有用1000个线程写入同一个文件,在这种情况下,你需要考虑线程安全。
答案 1 :(得分:3)
我同意Neeveks的回答,但我可以看到另外两个问题。
1)file
和message
应该是实例变量,不应该是静态的。将它们设置为静态意味着您一次只能管理一个文件和一条消息。
2)方法的名称以Java中的小写字母开头。请将WriteToFile
重命名为writeToFile
。这不是一个编程问题,但它有助于阅读您的代码。
答案 2 :(得分:1)
看起来不错,如果数据很大,您可以尝试内存映射文件。您可以从已有的关于写入文件here的ans中获得一些参考。