日期:2014-05-18  浏览次数:20950 次

文件读写并发问题
各位大虾好:

 现有一功能,涉及到对一文件进行并发读写操作,未避免并发问题,想到的办法是调用读写方法前新建一个锁文件,方法执行完后删除锁文件。
 现在想要测试文件并发功能,但读写时报错,对于这块不够了解,希望各位能给予指教。
如果有文件并发读写的示例和测试代码,也希望能贴出。
并发 测试 文件读写

------解决方案--------------------
文件读定,如果你是在同一个JVM里面的话你直接同步读定代码不就可以了吗?

如果是不同JVM的话,我的建议是你其实不用建立一个锁文件只需要在读文件时复制一份出来,读的线程去读这个copy就行了.写文件的线程只需要写不需要同步了.这样每一个读写线程都有自己的一份专用文件来操作了.当然写线程只能有一个.
------解决方案--------------------
不用多个文件,和多线程下载一样,多线程控制写的块位置,就可以了,想提高速度,可以先写在内存里边,达到一定大小后在写文件。
------解决方案--------------------
看看,不符合要求,自己再改改吧~


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.nio.channels.FileLock;


public class ReadAndWriteByLock
{

    public static void main(String[] args)
    {
        Runnable readThread = new Runnable()
        {

            public void run()
            {
                File oneFile = new File("allMyWords.txt");
                readFileByLock(oneFile);
            }
        };

        Runnable writeThread = new Runnable()
        {

            public void run()
            {