多线程分别定时读写同一个文件的样例

解决多进程或多线程同时读写同一个文件的问题 本文介绍一种在PHP中解决多进程或多线程同时读写同一个文件的问题。 阅读详情
 两个线程,一个每分钟写入当前时间到指定文件,另一个线程读出每分钟新写的内容。

使用简单的Thread.sleep技术实现定时

  1. package test.thread;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.util.Date;
  7. /**
  8.  * 多线程读写同一个文件的样例。
  9.  * 
  10.  * @author 赵学庆 www.java2000.net
  11.  */
  12. public class ThreadReadWrite {
  13.   public static void main(String[] args) {
  14.     new ThreadWrite().start();
  15.     try {
  16.       Thread.sleep(2000); // 休眠,以免那面还有写好
  17.     } catch (InterruptedException e) {
  18.       e.printStackTrace();
  19.     }
  20.     new ThreadRead().start();
  21.   }
  22. }
  23. class ThreadWrite extends Thread {
  24.   File file = new File("test.txt");
  25.   @Override
  26.   public void run() {
  27.     try {
  28.       while (true) {
  29.         FileWriter out = new FileWriter(file, true);// 追加写入
  30.         out.write(new Date() + "/n");
  31.         out.flush();
  32.         out.close();
  33.         Thread.sleep(3000); // 我这里间隔改成3秒,方便测试
  34.       }
  35.     } catch (Exception e) {
  36.       e.printStackTrace();
  37.     }
  38.   }
  39. }
  40. class ThreadRead extends Thread {
  41.   File file = new File("test.txt");
  42.   @Override
  43.   public void run() {
  44.     try {
  45.       BufferedReader reader = new BufferedReader(new FileReader(file));
  46.       while (true) {
  47.         System.out.println(reader.readLine());
  48.         Thread.sleep(3000); // 我这里间隔改成3秒,方便测试
  49.       }
  50.     } catch (Exception e) {
  51.       e.printStackTrace();
  52.     }
  53.   }
  54. }

如果真的要求严格,应该用Timer继续比较精确的控制。

  1. package test.thread;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileReader;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.util.Date;
  8. import java.util.Timer;
  9. import java.util.TimerTask;
  10. /**
  11.  * 使用Timer定时器进行同一文件的读写。
  12.  * 
  13.  * @author 赵学庆 www.java2000.net
  14.  */
  15. public class ThreadReadWriteTimer {
  16.   static File file = new File("test.txt");
  17.   public static void main(String[] args) {
  18.     Timer timer = new Timer();
  19.     timer.scheduleAtFixedRate(new TimerTask() {
  20.       @Override
  21.       public void run() {
  22.         FileWriter out;
  23.         try {
  24.           out = new FileWriter(file, true);
  25.           // 追加写入
  26.           out.write(new Date() + "/n");
  27.           out.flush();
  28.           out.close();
  29.         } catch (IOException e) {
  30.           e.printStackTrace();
  31.         }
  32.       }
  33.     }, 0, 3000);
  34.     timer.scheduleAtFixedRate(new TimerTask() {
  35.       BufferedReader reader = null;
  36.       {
  37.         try {
  38.           reader = new BufferedReader(new FileReader(file));
  39.         } catch (IOException e) {
  40.           e.printStackTrace();
  41.         }
  42.       }
  43.       @Override
  44.       public void run() {
  45.         try {
  46.           System.out.println(reader.readLine());
  47.         } catch (IOException e) {
  48.           e.printStackTrace();
  49.         }
  50.       }
  51.     }, 1000, 3000);
  52.   }
  53. }












<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
专门处理文件的类------RandomAccessFile类 Java除了File类之外,还提供了专门处理文件的类,即RandomAccessFile(随机访问文件)类。该类是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法。RandomAccessFile类支持“随机访问”方式,这里“随机”是指可以跳转到文件的任意位置处读写数据。在访问一个文件的时候,不必把文件从头读到尾,而是希望像访问一个数据库一样“随心所欲”地访问一个文件的某个部分,... 阅读详情

相关推荐

QT多线程Qthread读写同一个文件问题

两个线程可以同时打开一个文件,并且同时写和读都是可以的,都没有限制但是Qthread读写。

AIcar_lrm的博客 2571

C#多线程读写同一文件处理

在多线程访问读写同一个文件时,经常遇到异常:“文件正在由另一进程使用,因此该进程无法访问此文件”。 多线程访问统一资源的异常, 解决方案1,保证读写操作单线程执行,可以使用lock 解决方案2,使用System.Threading.ReaderWriterLockSlim ,对读写操作锁定处理 读写锁是以ReaderWriterLockSlim对象作为锁管理资源的,不同的 ReaderWriterLockSlim 对象中锁定同一个文件也会被视为不同的锁进行管理,这种差异可能会再次导致文件的并发写..

月亮哥的专栏 6876

qt文件操作的一些技巧

二、多线程处理大文件的最佳实践最根本解决方案是避免多个线程访问同一资源。我们可以将大文件分割成多个独立部分,分别由不同线程独占处理。只需引入一些同步点,进行简单的合并即可。如果无法避免共享资源,就必须使用同步原语如QMutex和QReadWriteLock来保护临界区。这能够确保同一时间只有一个线程能访问资源。但注意锁粒度不宜过大,会影响并发性能。Qt提供了QAtomicInteger等原子操作类,我们可以用它们来保护一些简单的计数、状态位等共享变量,避免加锁开销。死锁通常由多线程循环等待造成。

阿呆 1488

java中Writer的线程安全性

以前负责一个项目,我负责从一个超大的文本文件中读取信息存入数据库再进一步分析。而文本文件内容是每行一个json串。我在解析的过程中发现,有很小的概率json串的结构会破坏,比如前一个json串只写了半行,后面就被另一个json串覆盖掉了。 与产生日志的部门沟通,他们说是多线程使用log4j写入,可能偶尔会有串行。 具体他们是否使用log4j的AsyncAppender我不太了解,暂时也没去看l

watchzerg1的专栏 969

java两个线程同时写一个文件

主要为大家详细介绍了java两个线程同时写一个文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

从零构建:如何用MATLAB打造你的第一个Stewart平台运动学仿真器

本文详细介绍了如何使用MATLAB从零构建一个六自由度Stewart平台运动学仿真器,涵盖基础理论、环境配置、运动学建模、动态轨迹规划和实时可视化实现。通过MATLAB的Robotics System Toolbox和Simulink等工具,读者可以掌握六自由度Stewart平台的逆运动学求解、正运动学求解及仿真系统集成,适用于飞行模拟器和精密定位等应用场景。

peach的博客 865

java多线程读写同一个文件的代码

本文提供java多线程分别定时读写同一个文件的样例,其中两个线程,一个每分钟写入当前时间到指定文件,另一个线程读出每分钟新写的内容。 使用简单的Thread.sleep技术实现定时 package test.thread; import java.io.BufferedReader; import java.io.File; import java.io.FileReader;

821

Matlab子图排版终极指南:从tight_subplot到tiledlayout的实战对比

本文深入对比Matlab中两大子图排版工具:社区经典函数tight_subplot与官方现代布局管理器tiledlayout。针对默认subplot产生的子图间距与边缘距离问题,详细解析两者的设计哲学、参数控制与实战应用,帮助用户根据版本与需求选择最佳方案,实现高效、精确且美观的多子图排版。

weixin_29048309的博客 360

java多线程读取文件_java多线程读写同一个文件

本文提供java多线程分别定时读写同一个文件的样例,其中两个线程,一个每分钟写入当前时间到指定文件,另一个线程读出每分钟新写的内容。使用简单的Thread.sleep技术实现定时package test.thread;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io....

weixin_33347467的博客 3703

C# Log4Net不输出日志的解决方法

log4net是一个流行的 .NET 日志框架,用于记录应用程序的日志信息。如果你在使用log4net。

精通搬砖,资深技术砖家,在软件开发,人工智能,设备开发等领域都有研究。商业合作&交流学习可私信联系。 1263

STM32F103C8T6 Bootloader开发实战:串口IAP固件升级与Keil工程配置详解

本文详细介绍了STM32F103C8T6 Bootloader开发实战,重点讲解串口IAP固件升级的实现方法与Keil uVision5工程配置。通过Flash分区管理、USART1通信协议设计及应用程序跳转机制等核心技术,帮助开发者掌握嵌入式系统固件升级方案,提升设备维护效率。

weixin_29165725的博客 437

Python多线程编程,多线程定时器,文件锁,文件读取权限的知识记录

Python多线程编程,多线程定时器,文件锁,文件读取权限的知识记录 最近有个需求:统计交换机最近的接口收发速率和的信息,要带时间戳 Web发出HTTP请求,得到对应json信息返回过去,然后绘图 这里根据C-S客户端服务器模型,我需要在服务器端不断地更新数据,写到文件里,供客户端读文件信息 为了减少系统开销,我在REST服务器主线程端开启了一个子线程 这个子线程的功能是:轮询更新需要的信息,每分钟更新一次,把信息存到文件里 需要用Timer函数重写线程方法 class Repeat..

qq_33413832的博客 456

零基础速成simulink代码生成——stateflow基础3

此专栏面向嵌入式工程没有matlab开发经验的人,可以快速学习和实践这门技术。MDB技术,越来越成熟和普遍,从手写代码转到基于模型开发已经是大势,不仅减少开发周期,还增加代码的复用性。汽车领域、医疗和算法建模广泛使用。

不断debug,优化中…… 1712

Qt多线程中定时读取Modbus服务器 寄存器以及读写,另一个线程点击刷新系统时间

ui界面 程序结构图 global.h #ifndef GLOBAL_H #define GLOBAL_H #include &lt;QString&gt; class global { public: global(); static QString ComPortName; static QString Tor; }; #endif // GLOBAL...

DFrY的博客 8051

【主题建模】一种基于深度学习的主题建模方法:BERTopic(理论篇)

在我的博客中已经写了很多关于主题建模的内容,当你准备了解 BERTopic 时,默认你已经知道了 LSA、pLSA、NFM、LDA 等传统的主题建模方法。关于主题建模的前置知识我在这里不做赘述,感兴趣的同学可以看看我前几篇博客。学习 BERTopic 需要一定的机器学习基础,让我们一起开始吧!

Data · Model · Agent · Repeat 9896

069、自动曝光(AE)测光策略:全局/中心/点测光与曝光时间增益分配

本文深入探讨了自动曝光(AE)测光策略的技术细节与实际应用。作者通过多个真实案例(手机前置摄像头、车载ADAS、安防监控等)分析了全局测光、中心测光和点测光的优缺点,指出不同场景应采用不同策略。重点剖析了曝光时间与增益分配的"跷跷板效应",提出要根据传感器特性选择最优分配方案。文章强调测光策略应动态调整,并给出5条实用建议:结合场景切换测光模式、关注传感器增益拐点、点测光需防抖处理、全局测光不宜迷信、调试要观察亮度直方图。最后指出AE调试需要结合具体硬件特性进行实测优化,没有通用解决方案。

zzfmlxs的博客 103

java文件定时读写_java定时读取文件

在项目中经常会用到定时器,在笔试或者面试中也会经常问到定时器和IO流。public classTimerDemo {public static void main(String[] args) throwsException {Calendar date=Calendar.getInstance();//设置固定开始时间为 00:00:00date.set(date.get(Calendar.YE...

weixin_42697475的博客 718

New API 大模型网关保姆级教程:Docker Compose 部署 + MiniMax 接入 Claude 实战

New API 是一个开源的 AI 基座平台,提供统一的 API 接口接入 30+主流 AI 服务(如 OpenAI、Claude 等)。核心功能包括智能路由、精细计费、安全管控和多租户支持,采用 AGPLv3 协议开源。支持 Docker Compose 快速部署,通过修改配置文件即可连接不同数据库,适合从开发到生产环境的不同规模应用。部署时需注意修改默认密码等安全配置。

甘蓝的专栏 1614

python多线程读取文件的问题_Python多线程同步---文件读写控制方法

1、实现文件读写的文件ltz_schedule_times.py#! /usr/bin/env python#coding=utf-8import osdef ReadTimes():res = []if os.path.exists('schedule_times.txt'):fp = open('schedule_times.txt', 'r')else:os.system('touch sc...

weixin_39746282的博客 226

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

redis源码之:多线程与读写事件处理

多线程读写任务,并行读数据,串行执行命令

qq_22351805的博客 1312

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

读写锁、线程池、定时器

扩展知识1:读写锁 ReadWriteLock接口:可以实现多个读线程同时读取数据,写线程需要互斥执行。 读|写 、写|写 需要互斥 读|读 不需要互斥 import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; public class ...

weixin_42127489的博客 185

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C++读写锁介绍

一点睛 先看看互斥锁,它只有两个状态,要么是加锁状态,要么是不加锁状态。假如现在一个线程a只是想读一个共享变量 i,因为不确定是否会有线程去写它,所以我们还是要对它进行加锁。但是这时又有一个线程b试图去读共享变量 i,发现被锁定了,那么b不得不等到a释放了锁后才能获得锁并读取 i 的值,但是两个读取操作即使是同时发生的,也并不会像写操作那样造成竞争,因为它们不修改变量的值。所以我们期望在多个线...

实践求真知 1万+

Vant Weapp Toast 轻提示组件完全指南:API 方法、参数详解与源码级原理分析

Toast 轻提示是微信小程序开发中最常用的交互反馈组件之一,用于在页面中间弹出黑色半透明提示,承载消息通知、加载提示、操作结果提示等场景。本指南以 Vant Weapp 官方文档 [packages/toast/README.md](https://link.gitcode.com/i/8af55aeea7b87796841dcb54d208ad48) 为主体,结合 [toast.ts](htt

gitblog_00714的博客 321
上一篇: 最新蜘蛛的Agent和IP地址列表08-09-15
下一篇: URL重写的几种实现方式的总结
老紫竹
博客等级 码龄19年 1万+粉丝 1252原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值