多线程写一个资料,回字的3个写法
来源:互联网 发布:强制签名元素数据出错 编辑:程序博客网 时间:2024/05/02 02:16
参考地址:http://www.verydemo.com/demo_c134_i14238.html
多线程写一个文件,回字的3个写法
import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.concurrent.locks.ReentrantLock;import org.apache.commons.io.IOUtils;public class MuFile implements Runnable{static File file = new File("D:\\log6666666.txt");private int chunk;private static final ReentrantLock lock = new ReentrantLock();public MuFile(int chunk){this.chunk=chunk;}/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubif(!file.exists()){try {file.createNewFile();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}else{file.delete();}List<Thread> tl = new ArrayList<Thread>();for(int i=0;i<5;i++){Thread m = new Thread(new MuFile(i));m.setName("QJW"+i);tl.add(m);m.start();}for(int i=0;i<tl.size();i++){Thread m =tl.get(i);try {m.join();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}public void run() {List<String> lines = new ArrayList<String> ();String tname = Thread.currentThread().getName();try {Thread.sleep(3000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}for(int j=0;j<3;j++){lines.add(tname+" line "+j);}write(lines,chunk);//write2(lines,chunk);//write3(lines,chunk);}void write(List<String> lines,int chunk) {synchronized (file) {//File file = new File("D:\\sample4final.txt");FileWriter fw = null;BufferedWriter bw = null;try {fw = new FileWriter(file, true);bw = new BufferedWriter(fw);String tname = Thread.currentThread().getName();if (!lines.isEmpty()) {IOUtils.write(chunk+" -"+tname+" start: \n", bw);IOUtils.writeLines(lines, null, bw);IOUtils.write(chunk+" -"+tname+" end: \n", bw);bw.flush();}} catch (IOException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);} finally {IOUtils.closeQuietly(bw);IOUtils.closeQuietly(fw);}}}void write2(List<String> lines,int chunk) {//File file = new File("D:\\sample4final.txt");FileWriter fw = null;BufferedWriter bw = null;try {fw = new FileWriter(file, true);bw = new BufferedWriter(fw);String tname = Thread.currentThread().getName();if (!lines.isEmpty()) {IOUtils.write(chunk+" -"+tname+" start: \n", bw);IOUtils.writeLines(lines, null, bw);IOUtils.write(chunk+" -"+tname+" end: \n", bw);bw.flush();}} catch (IOException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);} finally {IOUtils.closeQuietly(bw);IOUtils.closeQuietly(fw);}}void write3(List<String> lines,int chunk) {lock.lock(); // block until condition holds//File file = new File("D:\\sample4final.txt");FileWriter fw = null;BufferedWriter bw = null;try {fw = new FileWriter(file, true);bw = new BufferedWriter(fw);String tname = Thread.currentThread().getName();if (!lines.isEmpty()) {IOUtils.write(chunk+" -"+tname+" start: \n", bw);IOUtils.writeLines(lines, null, bw);IOUtils.write(chunk+" -"+tname+" end: \n", bw);bw.flush();}} catch (IOException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);} finally {IOUtils.closeQuietly(bw);IOUtils.closeQuietly(fw);lock.unlock();}}}
0 0
- 多线程写一个资料,回字的3个写法
- 模板的写法,写一个titleBar
- 一个高人写的oracle资料
- 一个高人写的oracle资料
- hibernate 写HQL语句返回多个对象的写法
- “万能makefile”写法详解,一步一步写一个实用的Makefile
- 一个回调的写法:
- 多线程学习---写一个简单的线程
- 多线程学习--写一个简单的定时器
- 关注多线程的写法
- 一个很好的c#多线程的学习资料
- Android 多线程编程 一个游戏程序员的学习资料
- 写个一个简单的canvas图表
- 应一个好友要求写一个SpringJDBC 的文章 , 介绍返回操作数据库最新id写法
- 一个视图的写法
- 多线程情况下单例的写法
- 用python写的一个多线程的端口扫描
- 学习VC多线程时随手写的一个小例子
- Java设计模式透析之 —— 组合(Composite)
- 习惯性流产治疗方法
- [django]在页面中正常显示包含html标记的内容
- js的自定义事件
- POJ 1552 Doubles
- 多线程写一个资料,回字的3个写法
- ArcGIS教程:3D Analyst基础知识
- C语言面试基础题以及答案
- 科格思供应各种型号沥青混凝土除尘布袋
- Windows下源码运行OpenERP7.0
- 数组名和数组名取地址的区别
- 卧室颜色风水 教你用五行布局卧室颜色
- Linux命令之time
- java 异常:java.lang.UnsupportedClassVersionError