/**
   * Start a rendering job for specified {@link Chapter}. The job will sequentially render a
   * thumbnail one by one, starting from the first {@link LevelData}.
   *
   * @param chapter a {@link Chapter} that all of its {@link LevelData}'s thumbnail images will be
   *     rendered.
   */
  protected static void startRenderThumbnail(Chapter chapter) {
    // if (!chapter.isRenderingJobStarted()) {
    chapter.setRenderingJobStarted(true);

    System.out.println(
        "Thumbnail rendering job of chapter \"" + chapter.getChapterName() + "\" has started");

    RendererRunnable previousJob = null;
    for (LevelData level : chapter.getLevelDataList()) {
      if (!level.isThumbnailRenderJobOccupied()) {
        level.setThumbnailRenderJobOccupied();
        previousJob = new RendererRunnable(level, previousJob);
        new Thread(previousJob).start();
      }
    }
    // }
  }