Java高并发读写文件
在实际的项目中我们经常会与遇到操作文件的情况,这是很常见的,但是我们在实际中用传统的I/O操作不能满足我们项目的需要并且对文件的写特别慢,操作比较麻烦。那么我们怎么样实现呢?最近在项目中我们遇到了高并发的事情,我是这样操作的。利用JavaNIO实现非阻塞式的读写,通过锁机制完成高并发下的文件的操作。
public void run() {File file = new File("/home/test.txt");RandomAccessFile fout = null;FileChannel fcout = null;try {fout = new RandomAccessFile(file, "rw");long filelength = fout.length();//获取文件的长度fout.seek(filelength);//将文件的读写指针定位到文件的末尾fcout = fout.getChannel();//打开文件通道FileLock flout = null;while (true) {try {flout = fcout.tryLock();//不断的请求锁,如果请求不到,等一秒再请求break;} catch (Exception e) {System.out.print("lock is exist ......");sleep(1000);}}String str = " hello word!!!!\n";//需要写入的内容fout.write(str.getBytes());//将需要写入的内容写入文件flout.release();fcout.close();fout.close();} catch (IOException e1) {e1.printStackTrace();System.out.print("file no find ...");} catch (InterruptedException e) {e.printStackTrace();} finally {if (fcout != null) {try {fcout.close();} catch (IOException e) {e.printStackTrace();fcout = null;}}if (fout != null) {try {fout.close();} catch (IOException e) {e.printStackTrace();fout = null;}}}}
上面的代码实现了在文件的末尾追加内容,要想在文件的中间插入内容,这个方法还不能实现,必须读出来,当读到添加内容的位置,添加到StringBuffer中,然后读完文件,将文件读写指针定位开始,再将StringBuffer中的内容写回去就可以了。这个思想是可以实现的。我就不重复的添加代码了。如果在实现上遇见问题,随时留言。一起学习。
Java高并发读写文件相关推荐
- java高并发多线程及多进程同时写入文件研究
文章目录 测试&思考: java多线程同时写一个文件 第一种情况是:一个线程A有对文件加锁,另一个线程B没对文件加锁 在windows7环境下:(持有锁的可以写文件成功). 在linux ce ...
- JAVA高并发程序设计(葛一鸣著)读书笔记
本文为JAVA高并发程序设计(葛一鸣著)读书笔记.这本书对于刚刚入门的童鞋来讲可能有点深,我推荐可以先看看Java多线程编程核心技术(高洪岩著)一书. 第一章 走入并行世界 什么是同步和异步? 同步就 ...
- 《实战Java高并发程序设计》github笔记和源码
笔记 <实战Java高并发程序设计>中有很多代码范例,适合初学者通过实践入门并发编程,这本书有个问题就是前面的代码都用JDK7,第六章开始又用JDK8了 笔者做了相关笔记并整理源代码,欢迎 ...
- Java 高并发系列1-开篇
Java 高并发系列1-开篇 我们都知道在Android开发中, 一个Android程序启动之后会有一个主线程,也就是UI线程, 而网络加载数据, 本地文件长时间读写,图片压缩,等等,很多耗时操作会阻 ...
- Java高并发,如何解决,什么方式解决
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一 ...
- 《重学Java高并发》你管这“破玩意儿”叫锁(没有高并发经验的朋友们看过来,该专栏结合笔者的实战来讲高并发)
专栏特色:结合10余年的工作经验,在实践中提炼总结高并发经验,将理论落到实处,不仅助力面试,更是真正提高技能. 专栏目录: <重学Java高并发>Sempahore的使用场景与常见误区 & ...
- java高并发案例详细讲解
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研 ...
- Java高并发秒杀API(三)之Web层
Java高并发秒杀API(三)之Web层 1. 设计前的分析 Web层内容相关 前端交互设计 Restful规范 SpringMVC Bootstrap + jQuery 前端页面流程 详情页流程逻辑 ...
- 关于Java高并发的问题
前言: 对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和 ...
最新文章
- 微信支付curl出错及错误码解决方案
- 西安python工资怎么样-干货|python人工智能工程师工资多少钱
- 美国大学生数学建模竞赛赛题特点
- NYOJ 920 Trees
- EtherCAT伺服驱动器-如何选择硬件开发方案
- sqlserver 触发器 update_运维日记| SQL server 那点事——DML触发器
- php 四级联动插件,JavaScript_jQuery实现的多选框多级联动插件,jQuery 实现的多选框联动插件 - phpStudy...
- Elastic Job 入门
- 汽车“缺芯”的挑战与机遇
- 可重入锁模拟三个线程之间的通信
- Linux7安装oracle11g报错 Error in invoking target ‘agent nmhs‘ of makefile “ins_emagent.mk”
- Python判断一个正整数是否为素数的算法
- 中继器、网桥、路由器和网关的功能及区别
- YOLO v3 详解
- 数据结构入门9—虚树
- 全能型终端神器——MobaXterm安装教程
- 427. 建立四叉树
- 【VSCode报错】 Error while fetching extensions : XHR failed
- 在线电子书创建:MkDocs + Github + ReadTheDocs
- SDD与SDT的区别
热门文章
- 高效的 itertools 模块
- Python itertools accumulate
- ifnull mysql date,MySQL的CAST和IFNULL函数的问题
- 各大电商平台API常用方法总结(必看篇)
- Java IO体系结构图
- 初学Python实训心得以及一个爬虫例子
- java编程中的异常分析及面向对象的思考总结[图]
- 小程序拒绝摄像头授权,重新允许无法调起摄像头
- 赛题分析:AI决策•强化学习落地挑战赛——学习指定平等的促销策略
- 【AI数学】Group Normalization(何恺明ECCV2018最佳论文提名)