@SuppressWarnings("resource")
	@Override
	public void run() {
		int count = 0;
		String insert = "insert into outauthor(paperid,name,outauthors)values(?,?,?)";
		try {
			PreparedStatement statement = sqLconnection.conn
					.prepareStatement(insert);
			for (String id : IDS) {
				List<String> citationIDs = getCitedIDList
						.getCitedPapers(Integer.parseInt(id));
				HashMap<String, Integer> cachedAuthors = new HashMap<>();
				List<String> subAuthor = new ArrayList<>();
				for (String curid : citationIDs) {
					subAuthor = getAuthorList.getAuthors(Integer
							.parseInt(curid));
					for (String au : subAuthor) {
						if (cachedAuthors.containsKey(au)) {
							cachedAuthors.put(au, cachedAuthors.get(au) + 1);
						} else {
							cachedAuthors.put(au, 1);
						}
					}
					subAuthor = new ArrayList<>();
				}
				citationIDs = new ArrayList<>();
				String authors = "";
				for (String au : cachedAuthors.keySet()) {
					authors += au + "#" + cachedAuthors.get(au) + ",";
				}
				cachedAuthors = new HashMap<>();
				List<String> tmpAuthor = getAuthorList.getAuthors(Integer
						.parseInt(id));
				for (String tmp : tmpAuthor) {
					statement.setInt(1, Integer.parseInt(id));
					statement.setString(2, tmp);
					statement.setString(3, authors);
					statement.addBatch();
					count++;
					if (count % 1000 == 0) {
						System.out.println(name + ":" + count);
						statement.executeBatch();
						statement.clearBatch();
						this.sqLconnection.disconnectMySQL();
						this.getAuthorList.closeConnection();
						this.getCitedIDList.closeConnection();
						this.getAuthorList = new GetAuthorList();
						this.getCitedIDList = new GetCitedIDList();
						this.sqLconnection = new connection().conn();
						statement = sqLconnection.conn.prepareStatement(insert);
					}
				}
				tmpAuthor = new ArrayList<>();
			}
			statement.executeBatch();
			statement.clearBatch();
			statement.close();
			this.sqLconnection.disconnectMySQL();
			this.getAuthorList.closeConnection();
			this.getCitedIDList.closeConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}