### Question:
RKv extends RBase { public void set(String key, byte[] value) throws KitDBException { checkTxStart(); try (CloseLock ignored = checkClose()) { byte[] keyb = getKey(key); LockEntity lockEntity = lock.lock(key); try { start(); byte[] key_b = ArrayKits.addAll(HEAD_B, keyb); putDB(key_b, value, SstColumnFamily.DEFAULT); deleteDB(ArrayKits.addAll(HEAD_TTL, keyb), SstColumnFamily.DEFAULT); commit(); } finally { lock.unlock(lockEntity); release(); } checkTxCommit(); } catch (Exception e) { checkTxRollBack(); throw e; } } protected  RKv(DB db); void set(String key, byte[] value); long incr(String key, int step, int ttl); long incr(String key, int step); void set(Map<String, byte[]> map); void set(Map<String, byte[]> map, int ttl); void set(String key, byte[] value, int ttl); void ttl(String key, int ttl); Map<String, byte[]> get(List<String> keys); byte[] get(String key); byte[] getNoTTL(String key); void del(String key); void delPrefix(String key_); List<String> keys(String key_, int start, int limit); final static String HEAD; final static byte[] HEAD_TTL; final static byte[] HEAD_B; }### Answer:
@Test public void set() throws Exception { String head = "setA"; RKv kv = db.getrKv(); try { JoinFuture<String> joinFuture = JoinFuture.build(executorService, String.class); for (int i = 0; i < 10 * 10000; i++) { int fj = i; joinFuture.add(args -> { try { kv.set(head + fj, ("test" + fj).getBytes()); } catch (Exception e) { e.printStackTrace(); } return ""; }); } joinFuture.join(); for (int i = 0; i < 10 * 10000; i++) { byte[] bytes = kv.get(head + i); Assert.assertArrayEquals(bytes, ("test" + i).getBytes()); } } finally { } }