多线程同时读同一文件,然后写不同文件,会不会有问题?

venus0608 2006-01-20 11:46:18
莫名其妙的发现,程序运行完后,有些线程写出了所有文件,有些没有,只写了其中一些文件,真是奇怪。

算法大约是这样的:

大约五个类,extends了Thread类,然后在iteration里边调用前4个Thread类,用.start()开始他们的线程,让他们自由读取同一文件,然后根据一些模型运算结果,写入各自独立的结果的文件,第五个类性质跟前4个一样,但是为了不让iteration运行过快,第五个没有用.start()开始它的独立线程,而是在iteration的线程里执行。

但是不知道为什么有些写出来了有些没有。
...全文
460 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
venus0608 2006-01-20
  • 打赏
  • 举报
回复
可是问题是那个需要读取的文件很大,我不想用文件锁锁定,而是多个线程同时读取,应该也没有问题吧?

不过这个不是主要的问题,主要的问题是为了不同的独立线程有的写出了所有的结果的文件,有的缺只写出了其中一些文件,真是搞不明白。

有没有大虾大略知道有什么问题存在呢?
bevin1010 2006-01-20
  • 打赏
  • 举报
回复
不会有问题的,读取文件的时侯,可以产生一个文件通道来锁定文件!看看下面这个链接
http://javaalmanac.com/egs/java.nio/SetFileLock.html
cenlmmx 2006-01-20
  • 打赏
  • 举报
回复
是啊,读锁一般都是共享的.只要一个资源上没有两个以上的线程抢着独占,都不会有问题.
crazycy 2006-01-20
  • 打赏
  • 举报
回复
不会 如同数据库的读锁,是共享的,被读的文件不需要被某个线程独自占用
niko7 2006-01-20
  • 打赏
  • 举报
回复
会不会是你写文件的模块或者运行模块有问题?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧