本文提供java多线程分别定时读写同一个文件的样例,其中两个线程,一个每分钟写入当前时间到指定文件,另一个线程读出每分钟新写的内容。

使用简单的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;

/**

* 多线程读写同一个文件的样例。

*/

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();

}

}

}

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

package test.thread;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

/**

* 使用Timer定时器进行同一文件的读写。

*/

public class ThreadReadWriteTimer {

static File file = new File("test.txt");

public static void main(String[] args) {

Timer timer = new Timer();

timer.scheduleAtFixedRate(new TimerTask() {

@Override

public void run() {

FileWriter out;

try {

out = new FileWriter(file, true);

// 追加写入

out.write(new Date() + "/n");

out.flush();

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}, 0, 3000);

timer.scheduleAtFixedRate(new TimerTask() {

BufferedReader reader = null;

{

try {

reader = new BufferedReader(new FileReader(file));

} catch (IOException e) {

e.printStackTrace();

}

}

@Override

public void run() {

try {

System.out.println(reader.readLine());

} catch (IOException e) {

e.printStackTrace();

}

}

}, 1000, 3000);

}

}

2013年3月06日 14:24

13

0

0

8

java多线程读取文件_java多线程读写同一个文件相关推荐

  1. 解决多进程或多线程同时读写同一个文件的问题

    解决多进程或多线程同时读写同一个文件的问题 PHP是没有多线程概念的,尽管如此我们仍然可以用"不完美"的方法来模拟多线程.简单的说,就是队列处理. 通过对文件进行 加锁和解锁 来实 ...

  2. java 多线程下载 断点_Java 多线程断点下载文件

    基起原根蒂根基理:哄骗URLConnection获取要下载文件的长度.头部等相干信息,并设置响应的头部信息.并且经由过程URLConnection获取输入流,将文件分成指定的块,每一块零丁开辟一个线程 ...

  3. java线程下载文件_Java多线程下载文件实例详解

    本文实例为大家分享了Java多线程下载文件的具体代码,供大家参考,具体内容如下 import java.io.File; import java.io.InputStream; import java ...

  4. java 多线程下载器_Java多线程的下载器(1)

    实现了一个基于Java多线程的下载器,可提供的功能有: 1. 对文件使用多线程下载,并显示每时刻的下载速度. 2. 对多个下载进行管理,包括线程调度,内存管理等. 一:单个文件下载的管理 1. 单文件 ...

  5. java 多线程下载图片_java多线程实现下载图片并压缩

    最近在做一个需求:从其他系统的ftp目录下载存储图片url的文件,然后读取文件中的url地址,根据地址下载图片后按天压缩成一个包,平均一个地址文件中包含4000个地址左右,也就是说一个文件扫描后需要下 ...

  6. java 锁旗标_Java多线程

    Java多线程 1. 多线程存在的意义 多线程最大的作用就是能够创建"灵活响应"的桌面程序,而编写多线程最大的困难就是不同线程之间共享资源的问题,要使这些资源不会同时被多个线程访问 ...

  7. java线程怎么用_Java多线程基本使用

    一.概念 1.进程 1.1进程:是一个正在进行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元. 1.2线程:就是进程中一个独立的控制单元,线程在控制着进程的执行,一 ...

  8. java 读写文件乱码_Java 解决读写本地文件中文乱码的问题

    Java 解决读写本地文件中文乱码的问题 前言: 在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码.原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式.通 ...

  9. java线程代码实现_Java 多线程代码实现讲解

    作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...

最新文章

  1. 如何利用百度API地图进行定位,非gps 定位
  2. copy一下面试题目
  3. OC基础 代理和协议
  4. ASP.NET MVC 3 Internationalization
  5. Python if条件判断
  6. Java对接SAP平台接口
  7. AndroidX 方法数限制 Error:Cannot fit requested classes in a single dex file 64K问题
  8. 2022年中国折叠屏手机市场洞察报告
  9. 计算机基础在线阅读,TOP16[定稿]计算机基础教案(上下册).doc文档免费在线阅读...
  10. 有关Kill Session问题的讨论(旧文初发)
  11. 这款工具不用手写一行代码就能做出网站!
  12. swift VFL - 父视图是scrollview 注意点
  13. FISCO BCOS Solidity 智能合约 返回多个值
  14. Debian8.1 安装samba与windows共享文件,在系统重启后samba服务无法自动启动
  15. 校招行测笔试-图形推理
  16. 小课堂week17 编程范式巡礼第二季 并发那些事
  17. android sqlite 示例,Android SQLite数据库操作示例
  18. 用计算机怎么弹学猫叫,抖音我们一起学猫叫计算器谱分享
  19. 海量数据大课学习笔记(8)-账号微服务注册模块+短信验证码+阿里云OSS开发实战-小滴课堂
  20. 系统中出现许多wmiprvse.exe进程的处理方法

热门文章

  1. Redis深度历险 学习笔记
  2. Vue3 $set?
  3. 计算机神奇游戏,这5个堪称黑科技的神奇软件,你的电脑里有几款?
  4. 《阿里云大规模即时云渲染支撑天猫双11“直播未来城”》
  5. 【数据压缩(五)】LZW编解码c语言实现和分析
  6. 析构函数可以为纯虚函数吗?纯虚函数可以有函数体吗?纯虚函数需要函数体吗?
  7. we learn考试能切屏吗_托福说 | 当留学生必备技能成托福口语真题,这题你能拿满分吗?!...
  8. 数据结构与算法:欧拉筛——查找素数(质数)的最优解算法 O(n)
  9. DRM系列(13)之writeback_job介绍
  10. WordPress博客无法登陆后台的解决办法