BufferedWriter多线程上传示例

本文通过代码示例向您介绍如何使用BufferedWriter类实现多线程上传。

// 该示例展示如何使用BufferedWriter类实现多线程上传数据至MaxCompute。
class UploadThread extends Thread {
  private UploadSession session;
  private static int RECORD_COUNT = 1200;
  public UploadThread(UploadSession session) {
    this.session = session;
  }
  @Override
  public void run() {
    // 生成TunnelBufferedWriter的实例。
    RecordWriter writer = session.openBufferedWriter();
    Record r = up.newRecord();
    for (int i = 0; i < RECORD_COUNT; i++) {
      r.setBigint(0, i);
      // 调用write接口写入数据。
      writer.write(r);
    }
    // 关闭TunnelBufferedWriter。
    writer.close();
  }
};
public class Example {
  public static void main(String args[]) {
   // 初始化MaxCompute和tunnel的代码。
   TableTunnel.UploadSession uploadSession = tunnel.createUploadSession(projectName, tableName);
   UploadThread t1 = new UploadThread(up);
   UploadThread t2 = new UploadThread(up);
   t1.start();
   t2.start();
   t1.join();
   t2.join();
   // uploadSession提交,结束上传。
   uploadSession.commit();
}