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

两个线程,一个每分钟写入当前时间到指定文件,另一个线程读出每分钟新写的内容。

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

package test.thread;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Date;
/**
* 多线程读写同一个文件的样例。
*
* @author 赵学庆 www.java2000.net
*/
public class ThreadReadWrite {
 public static void main(String[] args) {
  new ThreadWrite().start();
  try {
   Thread.sleep(2000); // 休眠,以免那面还有写好
  } catch (InterruptedException e) {
   e.printStackTrace();
  }
  new ThreadRead().start();
 }
}
class ThreadWrite extends Thread {
 File file = new File("test.txt");
 @Override
 public void run() {
  try {
   while (true) {
    FileWriter out = new FileWriter(file, true);// 追加写入
    out.write(new Date() + "\n");
    out.flush();
    out.close();
    Thread.sleep(3000); // 我这里间隔改成3秒,方便测试
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}
class ThreadRead extends Thread {
 File file = new File("test.txt");
 @Override
 public void run() {
  try {
   BufferedReader reader = new BufferedReader(new FileReader(file));
   while (true) {
    System.out.println(reader.readLine());
    Thread.sleep(3000); // 我这里间隔改成3秒,方便测试
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

时间: 2024-08-22 14:21:16

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

java多线程读写同一个文件

问题描述 同一个文件可以同时被一个线程读另一个线程写吗? 解决方案 如果有一个线程正在读文件,这时又有另个一个线程想来写这个文件 会报错吗?答案是不会.请运行以下的代码 就知道了package org.sse.test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOExc

mfc多线程一次读写文件

问题描述 mfc多线程一次读写文件 CFile file1; int i; void CflieopenDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 file1.Open(_T("D://vls//2.txt"),CFile::modeReadWrite); DWORD threadID; for(i = 0; i < 5; i++) { CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)T

android-Android 多线程下载APK文件,网络不稳定时,APK文件出错

问题描述 Android 多线程下载APK文件,网络不稳定时,APK文件出错 使用的是RandomAccessFile 为什么会出现这种情况? 解决方案 下载不完整,无法安装,如果你对这种通过seek去定位,然后复制字节操作不是很熟的话,建议别用RandomAccessFile,哪怕使用Android自身的DownloadManager也可以 解决方案二: 网络不稳定什么情况都有可能发上,将出错的文件和正确的文件用二进制比较工具(比如ultracomparer)比较,看看是分块的问题还是漏传了某

c#多线程读写图片画图-C# 多线程读写删除文件并绘制在picture上

问题描述 C# 多线程读写删除文件并绘制在picture上 namespace PictureSD { public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool flag; bool flag2; private Object thisLock = new object(); ComputePic face; Thread ThreadSamp;// 图片 Bitmap bc1; Bitm

C#多线程delegate委托方式读取多文件到同一个文本框显示

今天,有个网友,提问: 指定目录中有若干个很小的文本文件,现在需要使用多线程进行读取. 一个文件一个线程或设置共有10个线程之类的方式都可以. 把读取的文本全部追加到窗口中的指定编辑框中,只有一个编辑框,都写在这个里面,不分顺序,换行即可. 我用委托的方式,写了下面的解决方法: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.D

mfc c++ 读写log文件-mfc/c++ 读写log文件并可以显示到窗口

问题描述 mfc/c++ 读写log文件并可以显示到窗口 服务器多线程想把每个线程的运行过程(接受,发送,产生异常)记录到log文件中,如何创建和读取这个log文件. 解决方案 就是普通的文件读写被,可以把函数写成一个宏,参数就是当前代码行数和对应的错误字符串说明 解决方案二: http://www.cnblogs.com/mazhenyu/p/4139352.html

如何使用MATLAB语言读写YUV文件

本文详细介绍了如何使用MATLAB进行读写YUV文件,并给出了详细的代码及其分析. 示例程序如下: close all; clear; fid1=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result\hall_cif_352x288_300\QP=22\bgf_rec.yuv','rb'); fid2=fopen('D:\HM-14.0-ROI\bin\vc10\Win32\Release\Result\背景建模Result

如何在C#中读写INI文件

INI文件就是扩展名为"ini"的文件.在Windows系统中,INI文件是很多,最重要的就是"System.ini"."System32.ini"和"Win.ini".该文件主要存放用户所做的选择以及系统的各种参数.用户可以通过修改INI文件,来改变应用程序和系统的很多配置.但自从Windows 95的退出,在Windows系统中引入了注册表的概念,INI文件在Windows系统的地位就开始不断下滑,这是因为注册表的独特优点

读写xml文件的2个小函数

xml|函数 #region 读写xml文件的2个小函数,2005 4 2 by hyc  public void SetXmlFileValue(string xmlPath,string AppKey,string AppValue)//写xmlPath是文件路径+文件名,AppKey是 Key Name,AppValue是Value  {   XmlDocument xDoc = new XmlDocument();   xDoc.Load(xmlPath);   XmlNode xNod