当前位置: 首页>>代码示例>>Java>>正文


Java ThreadInterruptedException类代码示例

本文整理汇总了Java中org.apache.lucene.util.ThreadInterruptedException的典型用法代码示例。如果您正苦于以下问题:Java ThreadInterruptedException类的具体用法?Java ThreadInterruptedException怎么用?Java ThreadInterruptedException使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


ThreadInterruptedException类属于org.apache.lucene.util包,在下文中一共展示了ThreadInterruptedException类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: handleRefreshException

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
private void handleRefreshException(Exception e) {
    if (e instanceof AlreadyClosedException) {
        // ignore
    } else if (e instanceof RefreshFailedEngineException) {
        RefreshFailedEngineException rfee = (RefreshFailedEngineException) e;
        if (rfee.getCause() instanceof InterruptedException) {
            // ignore, we are being shutdown
        } else if (rfee.getCause() instanceof ClosedByInterruptException) {
            // ignore, we are being shutdown
        } else if (rfee.getCause() instanceof ThreadInterruptedException) {
            // ignore, we are being shutdown
        } else {
            if (state != IndexShardState.CLOSED) {
                logger.warn("Failed to perform engine refresh", e);
            }
        }
    } else {
        if (state != IndexShardState.CLOSED) {
            logger.warn("Failed to perform engine refresh", e);
        }
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:23,代码来源:IndexShard.java

示例2: close

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
@Override
public synchronized void close() {
  //System.out.println("NRT: set finish");

  finish = true;

  // So thread wakes up and notices it should finish:
  reopenLock.lock();
  try {
    reopenCond.signal();
  } finally {
    reopenLock.unlock();
  }

  try {
    join();
  } catch (InterruptedException ie) {
    throw new ThreadInterruptedException(ie);
  }

  // Max it out so any waiting search threads will return:
  searchingGen = Long.MAX_VALUE;
  notifyAll();
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:25,代码来源:ControlledRealTimeReopenThread.java

示例3: waitIfStalled

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
/**
 * Blocks if documents writing is currently in a stalled state. 
 * 
 */
void waitIfStalled() {
  if (stalled) {
    synchronized (this) {
      if (stalled) { // react on the first wakeup call!
        // don't loop here, higher level logic will re-stall!
        try {
          incWaiters();
          wait();
          decrWaiters();
        } catch (InterruptedException e) {
          throw new ThreadInterruptedException(e);
        }
      }
    }
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:21,代码来源:DocumentsWriterStallControl.java

示例4: obtain

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
/** Attempts to obtain an exclusive lock within amount of
 *  time given. Polls once per {@link #LOCK_POLL_INTERVAL}
 *  (currently 1000) milliseconds until lockWaitTimeout is
 *  passed.
 * @param lockWaitTimeout length of time to wait in
 *        milliseconds or {@link
 *        #LOCK_OBTAIN_WAIT_FOREVER} to retry forever
 * @return true if lock was obtained
 * @throws LockObtainFailedException if lock wait times out
 * @throws IllegalArgumentException if lockWaitTimeout is
 *         out of bounds
 * @throws IOException if obtain() throws IOException
 */
public final boolean obtain(long lockWaitTimeout) throws IOException {
  failureReason = null;
  boolean locked = obtain();
  if (lockWaitTimeout < 0 && lockWaitTimeout != LOCK_OBTAIN_WAIT_FOREVER)
    throw new IllegalArgumentException("lockWaitTimeout should be LOCK_OBTAIN_WAIT_FOREVER or a non-negative number (got " + lockWaitTimeout + ")");

  long maxSleepCount = lockWaitTimeout / LOCK_POLL_INTERVAL;
  long sleepCount = 0;
  while (!locked) {
    if (lockWaitTimeout != LOCK_OBTAIN_WAIT_FOREVER && sleepCount++ >= maxSleepCount) {
      String reason = "Lock obtain timed out: " + this.toString();
      if (failureReason != null) {
        reason += ": " + failureReason;
      }
      throw new LockObtainFailedException(reason, failureReason);
    }
    try {
      Thread.sleep(LOCK_POLL_INTERVAL);
    } catch (InterruptedException ie) {
      throw new ThreadInterruptedException(ie);
    }
    locked = obtain();
  }
  return locked;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:39,代码来源:Lock.java

示例5: stopUpdateThread

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
/**
 * Stop the update thread. If the update thread is not running, silently does
 * nothing. This method returns after the update thread has stopped.
 */
public synchronized void stopUpdateThread() {
  if (updateThread != null) {
    // this will trigger the thread to terminate if it awaits the lock.
    // otherwise, if it's in the middle of replication, we wait for it to
    // stop.
    updateThread.stop.countDown();
    try {
      updateThread.join();
    } catch (InterruptedException e) {
      Thread.currentThread().interrupt();
      throw new ThreadInterruptedException(e);
    }
    updateThread = null;
  }
}
 
开发者ID:europeana,项目名称:search,代码行数:20,代码来源:ReplicationClient.java

示例6: testOverflowInt

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
public void testOverflowInt() throws Exception {
  Thread t = new Thread() {
      @Override
      public void run() {
        try {
          new SimpleRateLimiter(1).pause((long) (1.5*Integer.MAX_VALUE*1024*1024/1000));
          fail("should have been interrupted");
        } catch (ThreadInterruptedException tie) {
          // expected
        }
      }
    };
  t.start();
  Thread.sleep(10);
  t.interrupt();
}
 
开发者ID:europeana,项目名称:search,代码行数:17,代码来源:TestRateLimiter.java

示例7: waitForGeneration

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
/**
 * Waits for the target generation to become visible in
 * the searcher.  If the current searcher is older than
 * the target generation, this method will block until the
 * searcher has been reopened by another thread via
 * {@link #maybeRefresh}, the given waiting time has elapsed, or until
 * the NRTManager is closed.
 * <p>
 * NOTE: if the waiting time elapses before the requested target generation is
 * available the current {@link SearcherManager} is returned instead.
 * 
 * @param targetGen
 *          the generation to wait for
 * @param time
 *          the time to wait for the target generation
 * @param unit
 *          the waiting time's time unit
 */
public void waitForGeneration(long targetGen, long time, TimeUnit unit) {
  try {
    final long curGen = writer.getGeneration();
    if (targetGen > curGen) {
      throw new IllegalArgumentException("targetGen=" + targetGen + " was never returned by this NRTManager instance (current gen=" + curGen + ")");
    }
    genLock.lockInterruptibly();
    try {
      if (targetGen > searchingGen) {
        for (WaitingListener listener : waitingListeners) {
          listener.waiting(targetGen);
        }
        while (targetGen > searchingGen) {
          if (!waitOnGenCondition(time, unit)) {
            return;
          }
        }
      }
    } finally {
      genLock.unlock();
    }
  } catch (InterruptedException ie) {
    throw new ThreadInterruptedException(ie);
  }
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:44,代码来源:NRTManager.java

示例8: rollback

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
@Override
public void rollback() throws IOException {
  Directory dir = getDirectory();
  try {
    while (true) {
      try {
        super.rollback();
      } catch (ThreadInterruptedException e) {
        // don't allow interruption
        continue;
      }
      break;
    }
  } finally {
    isClosed = true;
    directoryFactory.release(dir);
    numCloses.incrementAndGet();
  }
}
 
开发者ID:pkarmstr,项目名称:NYBC,代码行数:20,代码来源:SolrIndexWriter.java

示例9: run

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
@Override
public void run() {
  while (!stop) {
    // TODO: Use System.nanoTime() when Lucene moves to Java SE 5.
    counter.addAndGet(resolution);
    try {
      Thread.sleep( resolution );
    } catch (InterruptedException ie) {
      throw new ThreadInterruptedException(ie);
    }
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:13,代码来源:TimeLimitingCollector.java

示例10: waitForFlush

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
public synchronized void waitForFlush() {
  while (flushingWriters.size() != 0) {
    try {
      this.wait();
    } catch (InterruptedException e) {
      throw new ThreadInterruptedException(e);
    }
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:10,代码来源:DocumentsWriterFlushControl.java

示例11: handleMergeException

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
/** Called when an exception is hit in a background merge
 *  thread */
protected void handleMergeException(Throwable exc) {
  try {
    // When an exception is hit during merge, IndexWriter
    // removes any partial files and then allows another
    // merge to run.  If whatever caused the error is not
    // transient then the exception will keep happening,
    // so, we sleep here to avoid saturating CPU in such
    // cases:
    Thread.sleep(250);
  } catch (InterruptedException ie) {
    throw new ThreadInterruptedException(ie);
  }
  throw new MergePolicy.MergeException(exc, dir);
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:17,代码来源:ConcurrentMergeScheduler.java

示例12: doWait

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
private synchronized void doWait() {
  // NOTE: the callers of this method should in theory
  // be able to do simply wait(), but, as a defense
  // against thread timing hazards where notifyAll()
  // fails to be called, we wait for at most 1 second
  // and then return so caller can check if wait
  // conditions are satisfied:
  try {
    wait(1000);
  } catch (InterruptedException ie) {
    throw new ThreadInterruptedException(ie);
  }
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:14,代码来源:IndexWriter.java

示例13: execute

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
/**
 * run the Interruptable, capturing the executing thread. Concurrent calls to {@link #cancel(String)} will interrupt this thread
 * causing the call to prematurely return.
 *
 * @param interruptable code to run
 */
public void execute(Interruptable interruptable) {
    boolean wasInterrupted = add();
    RuntimeException throwable = null;
    try {
        interruptable.run();
    } catch (InterruptedException | ThreadInterruptedException e) {
        // assume this is us and ignore
    } catch (RuntimeException t) {
        throwable = t;
    } finally {
        remove();
    }
    // we are now out of threads collection so we can't be interrupted any more by this class
    // restore old flag and see if we need to fail
    if (wasInterrupted) {
        Thread.currentThread().interrupt();
    } else {
        // clear the flag interrupted flag as we are checking for failure..
        Thread.interrupted();
    }
    synchronized (this) {
        if (isCancelled()) {
            onCancel(reason, throwable);
        } else if (throwable != null) {
            // if we're not canceling, we throw the original exception
            throw throwable;
        }
    }
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:36,代码来源:CancellableThreads.java

示例14: fsync

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
protected void fsync(String name) throws IOException {
  File fullFile = new File(directory, name);
  boolean success = false;
  int retryCount = 0;
  IOException exc = null;
  while (!success && retryCount < 5) {
    retryCount++;
    RandomAccessFile file = null;
    try {
      try {
        file = new RandomAccessFile(fullFile, "rw");
        file.getFD().sync();
        success = true;
      } finally {
        if (file != null)
          file.close();
      }
    } catch (IOException ioe) {
      if (exc == null)
        exc = ioe;
      try {
        // Pause 5 msec
        Thread.sleep(5);
      } catch (InterruptedException ie) {
        throw new ThreadInterruptedException(ie);
      }
    }
  }
  if (!success)
    // Throw original exception
    throw exc;
}
 
开发者ID:gncloud,项目名称:fastcatsearch3,代码行数:33,代码来源:FSDirectory.java

示例15: pause

import org.apache.lucene.util.ThreadInterruptedException; //导入依赖的package包/类
/** Pauses, if necessary, to keep the instantaneous IO
 *  rate at or below the target. NOTE: multiple threads
 *  may safely use this, however the implementation is
 *  not perfectly thread safe but likely in practice this
 *  is harmless (just means in some rare cases the rate
 *  might exceed the target).  It's best to call this
 *  with a biggish count, not one byte at a time.
 *  @return the pause time in nano seconds 
 * */
@Override
public long pause(long bytes) {
  if (bytes == 1) {
    return 0;
  }

  // TODO: this is purely instantaneous rate; maybe we
  // should also offer decayed recent history one?
  final long targetNS = lastNS = lastNS + ((long) (bytes * nsPerByte));
  long curNS = System.nanoTime();
  if (lastNS < curNS) {
    lastNS = curNS;
  }

  // While loop because Thread.sleep doesn't always sleep
  // enough:
  while(true) {
    final long pauseNS = targetNS - curNS;
    if (pauseNS > 0) {
      try {
        Thread.sleep((int) (pauseNS/1000000), (int) (pauseNS % 1000000));
      } catch (InterruptedException ie) {
        throw new ThreadInterruptedException(ie);
      }
      curNS = System.nanoTime();
      continue;
    }
    break;
  }
  return targetNS;
}
 
开发者ID:gncloud,项目名称:fastcatsearch3,代码行数:41,代码来源:RateLimiter.java


注:本文中的org.apache.lucene.util.ThreadInterruptedException类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。