code: @Override
      public GenThread[] prepare(JobConf conf, Text key, Text value)
          throws IOException {
        this.rtc = new GenWriterRunTimeConstants();
        super.prepare(conf, key, value, rtc);
        rtc.task_name = key.toString() + rtc.taskID;
        rtc.roll_interval = conf.getLong(WRITER_ROLL_INTERVAL_KEY, 
            DEFAULT_ROLL_INTERVAL_SEC) * 1000;
        rtc.sync_interval = conf.getLong(WRITER_SYNC_INTERVAL_KEY, 
            DEFAULT_SYNC_INTERVAL_SEC) * 1000;
        rtc.max_time = conf.getLong(MAX_TIME_SEC_KEY, DEFAULT_MAX_TIME_SEC) * 1000;
        rtc.data_rate = conf.getLong(WRITER_DATARATE_KEY, DEFAULT_DATA_RATE) * 1024;
        rtc.input = value.toString();
        LOG.info("data rate: " + rtc.data_rate);
        GenWriterThread[] threads = new GenWriterThread[(int)rtc.nthreads];
        for (int i=0; i<rtc.nthreads; i++) {
          threads[i] = new GenWriterThread(conf, 
              new Path(new Path(rtc.input, rtc.task_name), 
                  rtc.task_name + "_" + i), rtc.task_name, i, rtc);
        }
        return threads;
      }
docs: Create a number of threads to generate write traffics
  @param conf
  @param key name of the mapper
  @param value location of data input
  @return
  @throws IOException