「java多线程处理文件」java多线程读取文本文件

博主:adminadmin 2022-11-23 17:20:09 58

今天给各位分享java多线程处理文件的知识,其中也会对java多线程读取文本文件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java多线程处理大批文件

线程数量一般是个估算值。这个要凭经验来判定。

判定规则如下:

如果您能保证您的线程程序不会因为等待任何I/O事件产生等待(比如等待网络、等待数据库、等待磁盘),那么应创建CPU进程个数个线程数。

如果您的线程程序I/O等待时间和执行时间大致相等,应创建CPU进程数x2个线程数。

java 多线程读取txt 文件

多线程将读取的数据全部读取到一个Buffer里面去,然后再通过Buffer去处理,也就是生产者消费者模型,你将txt读取到一个ByteBuffer或者是大字节数组队列里面都可以,然后通过其它处理线程进行按行分隔

java多线程同时读取一个文件,这个方法可行吗?

不可行。每次读取文件都需要创建缓存文件流,很占内存,而且多次读取实际上也是一个文件,还不如直接读取文件,之后通过条件多次获取需要的内容来的实际。

可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。

BufferedReader bre = null;

try {

String file = "D:/test/test.txt";

bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流

while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环

{

System.out.println(str);//原样输出读到的内容,此处可以添加条件进行不同的处理

};

备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

java多线程读写文件

public static void main(String[] args) {

File data = new File("data.txt");

try {

InputStreamReader read = new InputStreamReader(new FileInputStream(

data), "UTF-8");

final BufferedReader bufferedReader = new BufferedReader(read);

for (int i = 0; i 5; i++) {

new Thread(new Runnable() {

@Override

public void run() {

String lineTXT = null;

synchronized (bufferedReader) {

try {

while ((lineTXT = bufferedReader.readLine()) != null) {

System.out.println(Thread.currentThread()+":"+lineTXT);

bufferedReader.notify();

bufferedReader.wait();

}

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}finally{

bufferedReader.notifyAll();

}

}

}

}).start();

}

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

java中怎么用多个线程同时对一个文件读取,最终将文件内容保存到一个字节数组中去呢?

多线程读取文件在一块硬盘上没用,瓶颈在硬盘I/O,而不在CPU和内存。读取文件时,CPU不用复杂的计算工作,只是数据传输而已,多线程反而造成磁头来回移动,效率不高。如果是两块以上的硬盘,可以用不同的线程访问不同的硬盘,效率比单线程要高

而且多线程操作同一文件除了效率还会有多线程问题,多个线程同时往数组里存数据还会有线程安全问题,如果不同步处理读取的文件就是错误的。

如果读取的话只能设置每个线程各自读取偏 移量

读取文件大小(比如大小是200K)。 2,启动5个线程,第一个线程读到40,第二个线程跳过40在读到80,总之得合理安排好各个线程读取的大小。这样才能不重复读取。大数据处理框架mapreduce原理和此类似

java大数据 多线程写文件

1、采用public static的变量存储这一数值,每个线程都往这一共有静态变量里写入已复制大小。 2、采用Callable方式实现多线程,将结果作为返回值返回到主线程。这一方法只能在所有子线程都完成之后才能通过future获取。

关于java多线程处理文件和java多线程读取文本文件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-23,除非注明,否则均为首码项目网原创文章,转载请注明出处。