[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]java并发写文件,会导致内容错乱

上一篇:[备忘]PostgreSQL与JAVA JDBC数据类型对照表
下一篇:[备忘]使用google cache变相实现String的同步锁

添加日期:2021/10/21 10:19:04 快速返回   返回列表 阅读736次


package com.why;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Test {
    public static final int KB = 1024;
    public static final int DEFAULT_BUFFER_SIZE = 8 * KB;

    public static void main(String[] args) throws IOException {

        for (int aa = 0; aa < 100; aa++) {
            final int x = aa;
            new Thread() {
                public void run() {
                    File f = new File("d:\\aaaa.txt");

                    OutputStream out = null;

                    try {
                        out = new BufferedOutputStream(new FileOutputStream(f));
                    } catch (FileNotFoundException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }

                    byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
                    for (int i = 0; i < buffer.length; i++) {
                        buffer[i] = (byte) x;
                    }
                    for (int i = 0; i < 100; i++) {
                        try {
                            out.write(buffer, 0, buffer.length);
                        } catch (IOException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                    }

                    try {
                        out.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    System.out.println("结束"+x);
                }
            }.start();
        }

        try {
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}



结果类似这样:
AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA
AA AA AA AA AA AA AA AA AA
BB BB BB BB BB BB BB BB BB
BB BB BB BB BB BB BB BB BB
BB BB BB BB BB BB BB BB BB
CC CC CC CC CC CC CC CC CC
CC CC CC CC CC CC CC CC CC
CC CC CC CC CC CC CC CC CC
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved