Simplify asyncFlushBinaryDictionary.
We no longer write files when the dict has not been updated. Bug: 8187060 Change-Id: I8aa23a93d5deafb3a7f16f5466a5e0e84fbbf095main
parent
07c5b307d6
commit
570602a088
|
@ -40,7 +40,6 @@ import java.util.Map;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract base class for an expandable dictionary that can be created and updated dynamically
|
* Abstract base class for an expandable dictionary that can be created and updated dynamically
|
||||||
|
@ -101,9 +100,6 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
|
||||||
/* A extension for a binary dictionary file. */
|
/* A extension for a binary dictionary file. */
|
||||||
protected static final String DICT_FILE_EXTENSION = ".dict";
|
protected static final String DICT_FILE_EXTENSION = ".dict";
|
||||||
|
|
||||||
private final AtomicReference<Runnable> mUnfinishedFlushingTask =
|
|
||||||
new AtomicReference<Runnable>();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract method for loading initial contents of a given dictionary.
|
* Abstract method for loading initial contents of a given dictionary.
|
||||||
*/
|
*/
|
||||||
|
@ -561,14 +557,12 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
|
||||||
* Flush binary dictionary to dictionary file.
|
* Flush binary dictionary to dictionary file.
|
||||||
*/
|
*/
|
||||||
public void asyncFlushBinaryDictionary() {
|
public void asyncFlushBinaryDictionary() {
|
||||||
final Runnable newTask = new Runnable() {
|
ExecutorUtils.getExecutor(mDictName).execute(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
flushDictionaryLocked();
|
flushDictionaryLocked();
|
||||||
}
|
}
|
||||||
};
|
});
|
||||||
final Runnable oldTask = mUnfinishedFlushingTask.getAndSet(newTask);
|
|
||||||
ExecutorUtils.getExecutor(mDictName).replaceAndExecute(oldTask, newTask);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Implement BinaryDictionary.isInDictionary().
|
// TODO: Implement BinaryDictionary.isInDictionary().
|
||||||
|
|
|
@ -46,16 +46,6 @@ public class PrioritizedSerialExecutor {
|
||||||
0 /* keepAliveTime */, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));
|
0 /* keepAliveTime */, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Clears all queued tasks.
|
|
||||||
*/
|
|
||||||
public void clearAllTasks() {
|
|
||||||
synchronized(mLock) {
|
|
||||||
mTasks.clear();
|
|
||||||
mPrioritizedTasks.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enqueues the given task into the task queue.
|
* Enqueues the given task into the task queue.
|
||||||
* @param r the enqueued task
|
* @param r the enqueued task
|
||||||
|
@ -120,33 +110,10 @@ public class PrioritizedSerialExecutor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(final Runnable r) {
|
|
||||||
synchronized(mLock) {
|
|
||||||
mTasks.remove(r);
|
|
||||||
mPrioritizedTasks.remove(r);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void replaceAndExecute(final Runnable oldTask, final Runnable newTask) {
|
|
||||||
synchronized(mLock) {
|
|
||||||
if (oldTask != null) remove(oldTask);
|
|
||||||
execute(newTask);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
synchronized(mLock) {
|
synchronized(mLock) {
|
||||||
mIsShutdown = true;
|
mIsShutdown = true;
|
||||||
mThreadPoolExecutor.shutdown();
|
mThreadPoolExecutor.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isTerminated() {
|
|
||||||
synchronized(mLock) {
|
|
||||||
if (!mIsShutdown) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return mPrioritizedTasks.isEmpty() && mTasks.isEmpty() && mActive == null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue