package jelectrum.db; import jelectrum.TimeRecord; import com.google.protobuf.ByteString; import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.Semaphore; public abstract class DBMapThreaded extends DBMap { protected Executor exec; public DBMapThreaded(Executor exec) { this.exec = exec; } @Override public void putAll(Map<String, ByteString> m) { final Semaphore sem = new Semaphore(0); int count = 0; for(Map.Entry<String, ByteString> me : m.entrySet()) { final String key = me.getKey(); final ByteString value = me.getValue(); exec.execute( new Runnable() { public void run() { put(key, value); sem.release(1); } } ); count++; } try { sem.acquire(count); } catch(InterruptedException e) { throw new RuntimeException(e); } } }