多线程写文件

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.util.concurrent.Callable;

 

public class GetCdrMultithreading {

      

       class TaskWithResult implements Callable<String[]> {

              private int id;

              String[] values;

 

              public TaskWithResult(int id, String[] values) {

                     this.id = id;

                     this.values = values;

              }

 

              @Override

              public String[] call() throws Exception {

                     String[] res = new String[] { "1", "2" };

                     GetCdrMultithreading getCdrMultithreading=new GetCdrMultithreading();

                     getCdrMultithreading.writeCsv(values, ".csv","e:/rId/","msisdn_");

                     return res;

              }

       }

      

       public static class MyThread implements Runnable {

              int count = 1, number;

              String[] valuea;

 

              public MyThread(int num, String[] value) {

                     number = num;

                     valuea = value;

                     System.out.println("创建线程 " + number);

             

              }

 

              public void run() {

                     // 实现了接口的run()方法

                    

                     System.out.println("线程 " + number + ":计数 " + count);

                     String[] values = { "123", "234", "456", "567", "678" };

                     GetCdrMultithreading getCdrMultithreading=new GetCdrMultithreading();

              getCdrMultithreading.writeCsv(valuea,".csv","e:/rId/",values[num - 1] + "_" + num + "");

                     return;

                    

              }

 

             

 

       }

       public void start() throws Exception {

             

              GetCdrMultithreading aw = new GetCdrMultithreading();

              String[] value1 = { "asdf", "aadf", "adf" };

              String[] valu = new String[6];

String[] a = new TaskWithResult(100000000, value1).call();

              aw.write();

             

       }

       public void write() {

              String[] value1 = { "asdf", "aadf", "adf" };

              String[] value2 = { "bsdf", "badf", "bdf" };

              String[] value3 = { "csdf", "cadf", "cdf" };

              String[] value4 = { "dsdf", "dadf", "ddf" };

              String[] value5 = { "esdf", "eadf", "edf" };

              for (int i = 0; i < 6666; i++) {

                     System.out.println(i);

                     if (i == 0) {

                            String[] values = value1;

                            new Thread(new MyThread(i + 1, values)).start();

                     }

                     if (i == 1) {

                            String[] values = value2;

                            new Thread(new MyThread(i + 1, values)).start();

                     }

                     if (i == 2) {

                            String[] values = value3;

                            new Thread(new MyThread(i + 1, values)).start();

                     }

                     if (i == 3) {

                            String[] values = value4;

                            new Thread(new MyThread(i + 1, values)).start();

                     }

                     if (i == 4) {

                            String[] values = value5;

                            new Thread(new MyThread(i + 1, values)).start();

                     }

              }

       }

public String[] writeCsv(String[] values,String suffix,String path,String name) {

              String[] result = new String[2];

              result[0] = name;

              String fileName = name;

              FileWriter fileWriter = null;

              File csv = new File(path+"/"); // CSV文件

              if (!csv.exists()) {

                     csv.mkdirs();

              }

              try {

                     fileWriter = new FileWriter(path+"/"+fileName+suffix);

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

 

              StringBuffer bw = new StringBuffer();

              // 新增一行数据

              // bw.newLine();

              for (int i = 0; i < values.length; i++) {

                     bw.append(values[i]);

                     bw.append("\r\n");

              }

              try {

                     fileWriter.write(bw.toString());

                     fileWriter.flush();

                     fileWriter.close();

                     String fileNameT=name+"_"+".chk";

                     fileWriter = new FileWriter(path+"/"+fileNameT);

                     fileWriter.write("file_name:"+fileName+"\r\n");

                     fileWriter.write("row_num:"+values.length+"\r\n");

                     fileWriter.write("file_time:");

                     fileWriter.flush();

                     fileWriter.close();

              } catch (IOException e1) {

                     // TODO Auto-generated catch block

                     e1.printStackTrace();

              }

              return result;

       }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值