一个文件能同时被多个java线程读取吗
1、可以。但是由于机械磁盘只能同时一个线程访问,所以多线程的读取效率可能还不如单线程。
2、如果是两块以上的硬盘,可以用不同的线程访问不同的硬盘,效率比单线程要高 而且多线程操作同一文件除了效率还会有多线程问题,多个线程同时往数组里存数据还会有线程安全问题,如果不同步处理读取的文件就是错误的。
3、没有问题,因为你的静态处理方法中处理的每一个xml文件会被开辟单独的内存空间。所以多个线程访问的不是同一个资源。
对于多个文件的读取,使用多线程是否会比单线程效率高?
1、多线程一定比单线程快吗? 不一定!! 因为多线程中线程的创建和上下文切换也需要消耗时间。实验可以发现,并发执行累加操作不超过百万次时,多线程速度会比单线程执行累加操作要慢。
2、一般情况同等价值的多线程要比单线程运行速度快一些,因为它的网络通道相对来说信号传输方式更多。
3、所以效率高不高不能只看cpu用了多少时间。你可以再考虑考虑,不用多线程,你怎么设计一个单线程程序,同时监听键盘和麦克风的信息录入?其实计算机底层是有天然的异步特性的。这个东西就是中断。
4、读取文件时,CPU不用复杂的计算工作,只是数据传输而已,多线程反而造成磁头来回移动,效率不高。如果是两块以上的硬盘,可以用不同的线程访问不同的硬盘,效率比单线程要高。
java多线程同时读取一个文件,这个方法可行吗?
1、如果是两块以上的硬盘,可以用不同的线程访问不同的硬盘,效率比单线程要高 而且多线程操作同一文件除了效率还会有多线程问题,多个线程同时往数组里存数据还会有线程安全问题,如果不同步处理读取的文件就是错误的。
2、可以。但是由于机械磁盘只能同时一个线程访问,所以多线程的读取效率可能还不如单线程。
3、不是的。你的代码有问题,大概位置在FileWriter和System.out引起冲突,你可以参看“java编程思想”一书。等你看完后你就对java了解的比较全面了。
4、使用RandomAccessFile,用randomAccessFile.seek(long lenth)到文件指定的位置,再开始读取。
5、你把原来程序中直接读的地方,改成调用上面的函数,由该函数统一读行。这样,不管是你有 N 个线程,还是一个线程,都不会发生读的行重复,或者读的行不完整的现象了。