Anytime k-NN分類器を実装したいのですが、「classify(...)」メソッドを特定の時間呼び出して一時停止し、メソッドが一時停止される前に利用可能な結果を取得して、再開する方法が見つかりません。メソッドを特定の時間、一時停止し、メソッドが一時停止される前に利用可能な結果を取得するなど。
前もって感謝します!
Anytime k-NN分類器を実装したいのですが、「classify(...)」メソッドを特定の時間呼び出して一時停止し、メソッドが一時停止される前に利用可能な結果を取得して、再開する方法が見つかりません。メソッドを特定の時間、一時停止し、メソッドが一時停止される前に利用可能な結果を取得するなど。
前もって感謝します!
最近ここにPauseableThreadを投稿しました。
を使用して一時停止を実装できますReadWriteLock
。一時停止する機会が訪れるたびに一時的に書き込みロックを取得する場合は、一時停止するために読み取りロックを取得するための一時停止が必要です。
// The lock.
private final ReadWriteLock pause = new ReentrantReadWriteLock();
// Block if pause has been called without a matching resume.
private void blockIfPaused() throws InterruptedException {
try {
// Grab a write lock. Will block if a read lock has been taken.
pause.writeLock().lockInterruptibly();
} finally {
// Release the lock immediately to avoid blocking when pause is called.
pause.writeLock().unlock();
}
}
// Pause the work. NB: MUST be balanced by a resume.
public void pause() {
// We can wait for a lock here.
pause.readLock().lock();
}
// Resume the work. NB: MUST be balanced by a pause.
public void resume() {
// Release the lock.
pause.readLock().unlock();
}