JAVA并发读写数据

  1. 并发读
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    public void selectFullAmountData(PipedOutputStream outputStream) {
    CsvWriter csvWriter = new CsvWriter(outputStream, ',', Charset.forName("utf-8"));
    ArrayList<ArrayList<Object>> data = getData();
    //生成csv流
    try {
    for (ArrayList<Object> info : data) {
    csvWriter.writeRecord(StringTools.arrayListToStringArray(info));
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    //手动推送数据,否则会导致部分数据在缓冲区无法写入数据流丢失
    csvWriter.flush();
    //关闭csv写入流
    csvWriter.close();
    //关闭流
    closeOutputStream(outputStream);
    }
    private void closeOutputStream(PipedOutputStream outputStream) {
    try {
    //手动推送数据,否则会导致部分数据在缓冲区无法写入数据流丢失
    outputStream.flush();
    //关闭写入流,使监听方知道流已关闭,防止一直等待
    outputStream.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    public class ThreadRead extends Thread {
    private PipedOutputStream outputStream;
    ThreadRead(doSelect readData, PipedOutputStream outputStream) {
    this.outputStream = outputStream;
    }
    @Override
    public void run() {
    readData.selectFullAmountData(this.outputStream);
    }
    }