當前位置: 首頁>>代碼示例>>Java>>正文


Java ExecutorCompletionService.submit方法代碼示例

本文整理匯總了Java中java.util.concurrent.ExecutorCompletionService.submit方法的典型用法代碼示例。如果您正苦於以下問題:Java ExecutorCompletionService.submit方法的具體用法?Java ExecutorCompletionService.submit怎麽用?Java ExecutorCompletionService.submit使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在java.util.concurrent.ExecutorCompletionService的用法示例。


在下文中一共展示了ExecutorCompletionService.submit方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: testMultipleClients

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
@Test
public void testMultipleClients() throws Exception {
  ExecutorService exec = Executors.newFixedThreadPool(NUM_THREADS);
  try {
    ExecutorCompletionService<Boolean> ecs =
        new ExecutorCompletionService<Boolean>(exec);
    for (int i = 0; i < NUM_THREADS; ++i)
      ecs.submit(new IdLockTestThread("client_" + i));
    for (int i = 0; i < NUM_THREADS; ++i) {
      Future<Boolean> result = ecs.take();
      assertTrue(result.get());
    }
    idLock.assertMapEmpty();
  } finally {
    exec.shutdown();
    exec.awaitTermination(5000, TimeUnit.MILLISECONDS);
  }
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:19,代碼來源:TestIdLock.java

示例2: putEvents

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
private void putEvents(final KafkaChannel channel, final List<List<Event>>
        events, ExecutorCompletionService<Void> submitterSvc) {
  for (int i = 0; i < 5; i++) {
    final int index = i;
    submitterSvc.submit(new Callable<Void>() {
      @Override
      public Void call() {
        Transaction tx = channel.getTransaction();
        tx.begin();
        List<Event> eventsToPut = events.get(index);
        for (int j = 0; j < 10; j++) {
          channel.put(eventsToPut.get(j));
        }
        try {
          tx.commit();
        } finally {
          tx.close();
        }
        return null;
      }
    });
  }
}
 
開發者ID:moueimei,項目名稱:flume-release-1.7.0,代碼行數:24,代碼來源:TestKafkaChannel.java

示例3: testMultipleClients

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
@Test(timeout = 60000)
public void testMultipleClients() throws Exception {
  ExecutorService exec = Executors.newFixedThreadPool(NUM_THREADS);
  try {
    ExecutorCompletionService<Boolean> ecs =
        new ExecutorCompletionService<Boolean>(exec);
    for (int i = 0; i < NUM_THREADS; ++i)
      ecs.submit(new IdLockTestThread("client_" + i));
    for (int i = 0; i < NUM_THREADS; ++i) {
      Future<Boolean> result = ecs.take();
      assertTrue(result.get());
    }
    // make sure the entry pool will be cleared after GC and purge call
    int entryPoolSize = idLock.purgeAndGetEntryPoolSize();
    LOG.debug("Size of entry pool after gc and purge: " + entryPoolSize);
    assertEquals(0, entryPoolSize);
  } finally {
    exec.shutdown();
    exec.awaitTermination(5000, TimeUnit.MILLISECONDS);
  }
}
 
開發者ID:fengchen8086,項目名稱:ditb,代碼行數:22,代碼來源:TestIdReadWriteLock.java

示例4: loadTracksAsynchronously

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
private AudioPlaylist loadTracksAsynchronously(List<String> videoIds, String selectedVideoId) {
  ExecutorCompletionService<AudioItem> completion = new ExecutorCompletionService<>(mixLoadingExecutor);
  List<AudioTrack> tracks = new ArrayList<>();

  for (final String videoId : videoIds) {
    completion.submit(() -> sourceManager.loadTrackWithVideoId(videoId, true));
  }

  try {
    fetchTrackResultsFromExecutor(completion, tracks, videoIds.size());
  } catch (InterruptedException e) {
    Thread.currentThread().interrupt();
  }

  AudioTrack selectedTrack = sourceManager.findSelectedTrack(tracks, selectedVideoId);

  if (tracks.isEmpty()) {
    throw new FriendlyException("No tracks from the mix loaded succesfully.", SUSPICIOUS, null);
  } else if (selectedTrack == null) {
    throw new FriendlyException("The selected track of the mix failed to load.", SUSPICIOUS, null);
  }

  return new BasicAudioPlaylist("YouTube mix", tracks, selectedTrack, false);
}
 
開發者ID:sedmelluq,項目名稱:lavaplayer,代碼行數:25,代碼來源:YoutubeMixProvider.java

示例5: testMultiTopology

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
/**
 * Submit multiple jobs concurrently using ProcessSource.
 */
@Test
public void testMultiTopology() throws Exception {

    int executions = 4;
    ExecutorCompletionService<Boolean> completer = new ExecutorCompletionService<>(
            Executors.newFixedThreadPool(executions));
    for (int i = 0; i < executions; i++) {
        completer.submit(() -> {
            Topology t = newTopology();
            TStream<String> s = t.strings("a", "b", "c", "d", "e", "f", "g", "h");
            s.sink((tuple) -> { if ("h".equals(tuple)) System.out.println(tuple);});
            Condition<Long> tc = t.getTester().tupleCount(s, 8);
            complete(t, tc);
            return true;
        });
    }
    waitForCompletion(completer, executions);
}
 
開發者ID:quarks-edge,項目名稱:quarks,代碼行數:22,代碼來源:TStreamTest.java

示例6: testMultiTopologyWithError

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
/**
 * Submit multiple jobs concurrently using ProcessSource.
 */
@Test
public void testMultiTopologyWithError() throws Exception {

    int executions = 4;
    ExecutorCompletionService<Boolean> completer = new ExecutorCompletionService<>(
            Executors.newFixedThreadPool(executions));
    for (int i = 0; i < executions; i++) {
        completer.submit(() -> {
            Topology t = newTopology();
            TStream<String> s = t.strings("a", "b", "c", "d", "e", "f", "g", "h");
            // Throw on the 8th tuple
            s.sink((tuple) -> { if ("h".equals(tuple)) throw new RuntimeException("Expected Test Exception");});
            // Expect 7 tuples out of 8
            Condition<Long> tc = t.getTester().tupleCount(s, 7);
            complete(t, tc);
            return true;
        });
    }
    waitForCompletion(completer, executions);
}
 
開發者ID:quarks-edge,項目名稱:quarks,代碼行數:24,代碼來源:TStreamTest.java

示例7: testMultiTopologyPollWithError

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
/**
 * Submit multiple jobs concurrently using PeriodicSource.
 */
@Test
public void testMultiTopologyPollWithError() throws Exception {

    int executions = 4;
    ExecutorCompletionService<Boolean> completer = new ExecutorCompletionService<>(
            Executors.newFixedThreadPool(executions));
    for (int i = 0; i < executions; i++) {
        completer.submit(() -> {
            Topology t = newTopology();
            AtomicLong n = new AtomicLong(0);
            TStream<Long> s = t.poll(() -> n.incrementAndGet(), 10, TimeUnit.MILLISECONDS);
            // Throw on the 8th tuple
            s.sink((tuple) -> { if (8 == n.get()) throw new RuntimeException("Expected Test Exception");});
            // Expect 7 tuples out of 8
            Condition<Long> tc = t.getTester().tupleCount(s, 7);
            complete(t, tc);
            return true;
        });
    }
    waitForCompletion(completer, executions);
}
 
開發者ID:quarks-edge,項目名稱:quarks,代碼行數:25,代碼來源:TStreamTest.java

示例8: testMultipleClients

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
@Test
public void testMultipleClients() throws Exception {
  ExecutorService exec = Executors.newFixedThreadPool(NUM_THREADS);
  try {
    ExecutorCompletionService<Boolean> ecs = new ExecutorCompletionService<>(exec);
    for (int i = 0; i < NUM_THREADS; ++i)
      ecs.submit(new IdLockTestThread("client_" + i));
    for (int i = 0; i < NUM_THREADS; ++i) {
      Future<Boolean> result = ecs.take();
      assertTrue(result.get());
    }
    idLock.assertMapEmpty();
  } finally {
    exec.shutdown();
    exec.awaitTermination(5000, TimeUnit.MILLISECONDS);
  }
}
 
開發者ID:apache,項目名稱:hbase,代碼行數:18,代碼來源:TestIdLock.java

示例9: positiveTest

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
@Test
public void positiveTest() {

    // create the threads manager
    this.threadsManager = new ThreadsManager();

    // create all the threads
    ThreadPoolExecutor executor = ( ThreadPoolExecutor ) Executors.newCachedThreadPool();
    executor.setKeepAliveTime( 0, TimeUnit.SECONDS );
    ExecutorCompletionService<Object> executionService = new ExecutorCompletionService<Object>( executor );

    IterationListener listener = new IterationListener();

    msg( log, "Ask Java to create all threads" );
    for( int j = 0; j < N_THREADS; j++ ) {
        executionService.submit( new TestWorker( N_ITERATIONS, threadsManager, listener ), null );
    }

    // run all iterations
    for( int i = 0; i < N_ITERATIONS; i++ ) {
        msg( log, "ITERATION " + i + "\n\n" );
        runThisIteration();

        waitForIterationCompletion();
    }

    // it may take a little while all threads are gone
    try {
        Thread.sleep( 1000 );
    } catch( InterruptedException e ) {}

    // check if there are any remaining threads started by this test
    checkAllRemainingThreads();
}
 
開發者ID:Axway,項目名稱:ats-framework,代碼行數:35,代碼來源:Test_ThreadsManager.java

示例10: searchPointers

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
public void searchPointers() throws Exception
{
	memoryPointers.clear();
	MemoryDump memoryDump = memoryDumps.get(0);
	setPointerAddressRange(memoryDump);

	// Use a modified amount of threads because it works best
	Runtime runtime = Runtime.getRuntime();
	int threadsCount = runtime.availableProcessors() * 2;

	ByteBufferRange[] byteBufferRanges = getByteBufferRanges(memoryDump, threadsCount);

	ExecutorService executorService = Executors.newFixedThreadPool(threadsCount);
	ExecutorCompletionService<String> completionService = new ExecutorCompletionService<>(executorService);

	long targetAddress = memoryDump.getTargetAddress();

	// Process each range concurrently
	for (ByteBufferRange byteBufferRange : byteBufferRanges)
	{
		Callable<String> searchTask = () ->
		{
			searchPointers(targetAddress, byteBufferRange);

			return null;
		};

		// Start the search
		completionService.submit(searchTask);
	}

	// Wait for all tasks to finish
	for (ByteBufferRange ignored : byteBufferRanges)
	{
		completionService.take().get();
	}

	// Shutdown the thread pool
	executorService.shutdown();
}
 
開發者ID:BullyWiiPlaza,項目名稱:Universal-Pointer-Searcher,代碼行數:41,代碼來源:UniversalPointerSearcher.java

示例11: testConcurrentReading

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
@Test
public void testConcurrentReading() throws Exception {
  for (Compression.Algorithm compressAlgo : COMPRESSION_ALGORITHMS) {
    Path path =
        new Path(TEST_UTIL.getDataTestDir(), "concurrent_reading");
    Random rand = defaultRandom();
    List<Long> offsets = new ArrayList<Long>();
    List<BlockType> types = new ArrayList<BlockType>();
    writeBlocks(rand, compressAlgo, path, offsets, null, types, null);
    FSDataInputStream is = fs.open(path);
    long fileSize = fs.getFileStatus(path).getLen();
    HFileBlock.FSReader hbr = new HFileBlock.FSReaderV2(is, compressAlgo,
        fileSize);

    Executor exec = Executors.newFixedThreadPool(NUM_READER_THREADS);
    ExecutorCompletionService<Boolean> ecs =
        new ExecutorCompletionService<Boolean>(exec);

    for (int i = 0; i < NUM_READER_THREADS; ++i) {
      ecs.submit(new BlockReaderThread("reader_" + (char) ('A' + i), hbr,
          offsets, types, fileSize));
    }

    for (int i = 0; i < NUM_READER_THREADS; ++i) {
      Future<Boolean> result = ecs.take();
      assertTrue(result.get());
      if (detailedLogging) {
        LOG.info(String.valueOf(i + 1)
          + " reader threads finished successfully (algo=" + compressAlgo
          + ")");
      }
    }

    is.close();
  }
}
 
開發者ID:fengchen8086,項目名稱:LCIndex-HBase-0.94.16,代碼行數:37,代碼來源:TestHFileBlock.java

示例12: execute

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
private void execute(String[] args) throws IOException {
    if (args.length != 3) {
        usage();
        System.exit(1);
    }
    if (args[0].contains("-h")) {
        usage();
        System.exit(0);
    }
    int numThreads = Integer.parseInt(args[0]);
    ArrayBlockingQueue<Path> queue = new ArrayBlockingQueue<>(1000);
    rootDir = Paths.get(args[1]);
    QueueFiller filler = new QueueFiller(rootDir, queue, numThreads);
    new Thread(filler).start();
    outputDir = Paths.get(args[2]);
    Files.createDirectories(outputDir);
    ExecutorService executorService = Executors.newFixedThreadPool(numThreads);
    ExecutorCompletionService<Integer> executorCompletionService = new ExecutorCompletionService<Integer>(executorService);

    for (int i = 0; i < numThreads; i++) {
        executorCompletionService.submit(new FileRunner(queue,
                Files.newBufferedWriter(outputDir.resolve("mimes-"+i+".txt"))));
    }

    int completed = 0;
    while (completed < numThreads) {
        try {
            Future<Integer> future = executorCompletionService.poll(1, TimeUnit.SECONDS);
            if (future != null) {
                completed++;
            }
        } catch (InterruptedException e) {

        }
    }
    executorService.shutdown();
    executorService.shutdownNow();
    System.exit(0);
}
 
開發者ID:tballison,項目名稱:SimpleCommonCrawlExtractor,代碼行數:40,代碼來源:BatchFileIder.java

示例13: run

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
public void run() {
    // Prepare executor
    ExecutorService executor =
            Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
    ExecutorCompletionService<List<VocabularyWord>> completionService =
            new ExecutorCompletionService<>(executor);
    // Split words into groups of predefined size
    // We do this in order to mimic normal user behavior (and because there is a limit to how long URL can be)
    List<List<VocabularyWord>> groups =
            Stream.of(words).slidingWindow(WORDS_PER_GROUP, WORDS_PER_GROUP).collect(toList());
    // Submit them to executor
    for (List<VocabularyWord> group : groups) {
        completionService.submit(() -> translate(group));
    }
    List<VocabularyWord> wordsList = new ArrayList<>();
    // Collect results
    for (int i = 0; i < groups.size(); i++) {
        try {
            wordsList.addAll(completionService.take().get());
        } catch (InterruptedException | ExecutionException e) {
            logger.error("Failed to translated group of words", e);
        }
    }
    // Sort them by normalized words, otherwise all letters with diacritics would be placed at the end
    Collections.sort(wordsList, (o1, o2) -> o1.getNormalizedWord().compareTo(o2.getNormalizedWord()));
    observer.onNext(wordsList);
    provider.putWords(wordsList);
    logger.debug("LoadWordsTask run() returned list of size: [{}]", wordsList.size());
}
 
開發者ID:TriangleLeft,項目名稱:Flashcards,代碼行數:30,代碼來源:RestVocabularyModule.java

示例14: recoverFromLog

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
public Future<RecoveryInfo> recoverFromLog() {
  recoveryInfo = new RecoveryInfo();

  List<TransactionLog> recoverLogs = new ArrayList<>(1);
  for (TransactionLog ll : newestLogsOnStartup) {
    if (!ll.try_incref()) continue;

    try {
      if (ll.endsWithCommit()) {
        ll.decref();
        continue;
      }
    } catch (IOException e) {
      log.error("Error inspecting tlog " + ll, e);
      ll.decref();
      continue;
    }

    recoverLogs.add(ll);
  }

  if (recoverLogs.isEmpty()) return null;

  ExecutorCompletionService<RecoveryInfo> cs = new ExecutorCompletionService<>(recoveryExecutor);
  LogReplayer replayer = new LogReplayer(recoverLogs, false);

  versionInfo.blockUpdates();
  try {
    state = State.REPLAYING;
  } finally {
    versionInfo.unblockUpdates();
  }

  // At this point, we are guaranteed that any new updates coming in will see the state as "replaying"

  return cs.submit(replayer, recoveryInfo);
}
 
開發者ID:europeana,項目名稱:search,代碼行數:38,代碼來源:UpdateLog.java

示例15: applyBufferedUpdates

import java.util.concurrent.ExecutorCompletionService; //導入方法依賴的package包/類
/** Returns the Future to wait on, or null if no replay was needed */
public Future<RecoveryInfo> applyBufferedUpdates() {
  // recovery trips this assert under some race - even when
  // it checks the state first
  // assert state == State.BUFFERING;

  // block all updates to eliminate race conditions
  // reading state and acting on it in the update processor
  versionInfo.blockUpdates();
  try {
    cancelApplyBufferUpdate = false;
    if (state != State.BUFFERING) return null;
    operationFlags &= ~FLAG_GAP;

    // handle case when no log was even created because no updates
    // were received.
    if (tlog == null) {
      state = State.ACTIVE;
      return null;
    }
    tlog.incref();
    state = State.APPLYING_BUFFERED;
  } finally {
    versionInfo.unblockUpdates();
  }

  if (recoveryExecutor.isShutdown()) {
    tlog.decref();
    throw new RuntimeException("executor is not running...");
  }
  ExecutorCompletionService<RecoveryInfo> cs = new ExecutorCompletionService<>(recoveryExecutor);
  LogReplayer replayer = new LogReplayer(Arrays.asList(new TransactionLog[]{tlog}), true);
  return cs.submit(replayer, recoveryInfo);
}
 
開發者ID:europeana,項目名稱:search,代碼行數:35,代碼來源:UpdateLog.java


注:本文中的java.util.concurrent.ExecutorCompletionService.submit方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。