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


Java CompletableFuture.supplyAsync方法代碼示例

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


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

示例1: loadConfig

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
private CompletableFuture<List<KeyValueConfigEntity>> loadConfig(KeyValueConfigName configName) {
  return CompletableFuture.supplyAsync(() -> {
    List<KeyValueConfigEntity> result;
    try {
      result = repository.findAll(configName);
    } catch (Exception e) {
      LOGGER.warn("Exception at {}.findAll({}), cause: {}", repository.getClass().getSimpleName(), configName, e);
      result = Collections.emptyList();
    }
    return result;
  }, executor);
}
 
開發者ID:scalecube,項目名稱:config,代碼行數:13,代碼來源:KeyValueConfigSource.java

示例2: executeAsync

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
/**
 * This interface is typically used to operations like 
 * `click`, `clear`, `readText` and so on
 * 
 * @param o asynchronous operation to be performed
 * @param w webelement on which the operation must be performed
 * @return CompletableFuture<WebElement>
 * 
 * E.g. TestExecutionController tec = new TestExecutionController(...)
 * WebElement zip_code = pageObject.zip_code;
 * String[] zip = {"90210"};
 * tec.executeAsync(AsyncPageOperationsAdapter.clear, zip_code)
	.thenApply(w -> tec.executeAsync(AsyncPageOperationsAdapter.putText, (WebElement)w, zip));
 */
public CompletableFuture<WebElement> executeAsync(asyncOpOnWebElement o, WebElement w) {
	startTime();
	CompletableFuture<WebElement> a = CompletableFuture.supplyAsync(() -> { 
		try{
			o.on(currentPage, w);
		} 
		catch(Exception e)
		{
			e.printStackTrace();
		}
		return w;
	});
	futures.add(a);
	return a;
}
 
開發者ID:saiscode,項目名稱:kheera,代碼行數:30,代碼來源:TestExecutionController.java

示例3: deleteLastMessages

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
private void deleteLastMessages(CommandContext context, int limit) {
    int maxDepth = 1000;
    limit = Math.min(maxDepth, limit);
    IMessage message = context.getMessage();
    IDiscordClient client = message.getClient();
    IChannel c = client.getChannelByID(message.getChannel().getLongID());
    if (c != null) {
        log.info("Preparing to delete latest {} to channel {}", inflect(limit, "bot message"), c.getName());
        int deleted = 0;
        int i = 0;
        List<IMessage> toDelete = new ArrayList<>();
     MessageHistory history = c.getMessageHistory(limit);
        while (deleted < limit && i < history.size()) {
            IMessage msg = history.get(i++);
            if (msg.getAuthor().equals(client.getOurUser())) {
                toDelete.add(msg);
                deleted++;
            }
        }
        if (c.isPrivate() || toDelete.size() == 1) {
            AtomicBoolean abort = new AtomicBoolean(false);
            for (IMessage delete : toDelete) {
                if (abort.get()) {
                    break;
                }
                RequestBuffer.request(() -> {
                    try {
                        delete.delete();
                    } catch (MissingPermissionsException | DiscordException e) {
                        log.warn("Could not delete message - aborting", e);
                        abort.set(true);
                    }
                }).get();
            }
        } else {
            CompletableFuture.supplyAsync(() -> deleteInBatch(c, toDelete));
        }
    }
}
 
開發者ID:quanticc,項目名稱:sentry,代碼行數:40,代碼來源:Self.java

示例4: should_allow_composition_of_data_loader_calls

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
@Test
public void should_allow_composition_of_data_loader_calls() throws Exception {
    UserManager userManager = new UserManager();

    BatchLoader<Long, User> userBatchLoader = userIds -> CompletableFuture
            .supplyAsync(() -> userIds
                    .stream()
                    .map(userManager::loadUserById)
                    .collect(Collectors.toList()));
    DataLoader<Long, User> userLoader = new DataLoader<>(userBatchLoader);

    AtomicBoolean gandalfCalled = new AtomicBoolean(false);
    AtomicBoolean sarumanCalled = new AtomicBoolean(false);

    userLoader.load(1L)
            .thenAccept(user -> userLoader.load(user.getInvitedByID())
                    .thenAccept(invitedBy -> {
                        gandalfCalled.set(true);
                        assertThat(invitedBy.getName(), equalTo("Manwë"));
                    }));

    userLoader.load(2L)
            .thenAccept(user -> userLoader.load(user.getInvitedByID())
                    .thenAccept(invitedBy -> {
                        sarumanCalled.set(true);
                        assertThat(invitedBy.getName(), equalTo("Aulë"));
                    }));

    List<User> allResults = userLoader.dispatchAndJoin();

    await().untilTrue(gandalfCalled);
    await().untilTrue(sarumanCalled);

    assertThat(allResults.size(), equalTo(4));
}
 
開發者ID:bbakerman,項目名稱:java-dataloader,代碼行數:36,代碼來源:DataLoaderTest.java

示例5: connect

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
/**
 * Create new session factory bean for provided cassandra endpoint
 *
 * @param connectionData connection metadata
 * @return future providing new instance of {@link CassandraAdminTemplate template} to manage cassandra data
 */
public CompletableFuture<CassandraAdminTemplate> connect(ConnectionData connectionData) {
    return CompletableFuture.supplyAsync(() -> {
        if (isNullOrEmpty(connectionData.getKeyspace()) || isNullOrEmpty(connectionData.getUrl())) {
            throw new UrlSyntaxException("Both url and keyspace are required");
        }
        String[] urlParts = connectionData.getUrl().split(":");
        if (urlParts.length != 2) {
            throw new UrlSyntaxException("Url should contain host:port");
        }
        int port;
        try {
            port = Integer.parseInt(urlParts[1]);
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            throw new UrlSyntaxException("Invalid port : " + urlParts[1]);
        }

        Cluster.Builder builder = Cluster.builder()
                .addContactPoint(urlParts[0])
                .withPort(port);

        if (StringUtils.isNoneBlank(connectionData.getUsername(), connectionData.getPassword())) {
            builder.withCredentials(connectionData.getUsername(), connectionData.getPassword());
        }

        Cluster cluster = builder.build();

        CassandraSessionFactoryBean factory =
                beanFactory.getBean(CassandraSessionFactoryBean.class, cluster, connectionData.getKeyspace());
        Field adminTemplateField = findField(CassandraSessionFactoryBean.class, "admin");
        adminTemplateField.setAccessible(true);
        CassandraAdminTemplate template = (CassandraAdminTemplate) getField(adminTemplateField, factory);
        this.template.set(template);
        return template;
    });
}
 
開發者ID:Kindrat,項目名稱:cassandra-client,代碼行數:43,代碼來源:CassandraClientAdapter.java

示例6: testBehaviorOfIteratorsCycleWhenAddingNewKey

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
/**
 * Just a sanity test of java behaviors.
 *  - Create a concurrent hashmap with 4 entries
 *  - Create a new thread that runs forever cycling over the keys
 *  - In main thread add a new key.
 *  - See what happens to the thread cycling over keys, it should show up.
 */
@Test
public void testBehaviorOfIteratorsCycleWhenAddingNewKey() throws ExecutionException, InterruptedException {
    final Map<String, String> myMap = Maps.newConcurrentMap();
    myMap.put("Key1", "Value1");
    myMap.put("Key2", "Value2");
    myMap.put("Key3", "Value3");
    myMap.put("Key4", "Value4");

    // Create new Thread
    final CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
        Iterator<String> keyIterator = Iterators.cycle(myMap.keySet());
        while (keyIterator.hasNext()) {
            final String keyValue = keyIterator.next();
            if (keyValue.equals("Key5")) {
                return keyValue;
            }
        }
        return "Nada";
    });

    // Wait for a few iterations in the other thread have completed.
    Thread.sleep(1000L);

    // Modify the keys, adding a new one
    myMap.put("Key5", "Value5");

    // Make sure we get it.
    await()
        .atMost(5, TimeUnit.SECONDS)
        .until(() -> {
            // Ask for next tuple
            return future.getNow("NotYet");
        }, equalTo("Key5"));
}
 
開發者ID:salesforce,項目名稱:storm-dynamic-spout,代碼行數:42,代碼來源:RoundRobinBufferTest.java

示例7: loadDatabasePropertiesIntoMemory

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
private CompletableFuture<DatabaseProperties> loadDatabasePropertiesIntoMemory(final MessageReceivedEvent event) {
    return CompletableFuture.supplyAsync(() -> {
        if (!event.getChannelType().isGuild()) {
            return new DatabaseProperties(null, null);
        }

        GuildTransformer guild = GuildController.fetchGuild(avaire, event.getMessage());
        if (guild == null || !guild.isLevels()) {
            return new DatabaseProperties(guild, null);
        }
        return new DatabaseProperties(guild, PlayerController.fetchPlayer(avaire, event.getMessage()));
    });
}
 
開發者ID:avaire,項目名稱:avaire,代碼行數:14,代碼來源:MessageCreate.java

示例8: abortLRA

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
private void abortLRA() {
    int status = status();

    if (status == ActionStatus.RUNNING || status == ActionStatus.ABORT_ONLY) {
        if (LRALogger.logger.isDebugEnabled()) {
            LRALogger.logger.debugf("Transaction.abortLRA cancelling LRA %s", id);
        }

        CompletableFuture.supplyAsync(this::cancelLRA); // use a future to avoid hogging the ScheduledExecutorService
    }
}
 
開發者ID:xstefank,項目名稱:lra-service,代碼行數:12,代碼來源:Transaction.java

示例9: getTransactionRequestAsync

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
@Override
public CompletableFuture<GetTransactionRequestResponseVO[]> getTransactionRequestAsync(final GetTransactionRequestRequestVO request) {
    return CompletableFuture.supplyAsync(() -> getTransactionRequest(request), getExecutorService());
}
 
開發者ID:enjin,項目名稱:Enjin-Coin-Java-SDK,代碼行數:5,代碼來源:TransactionRequestsAsyncServiceImpl.java

示例10: executeAsync

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
public <T> CompletableFuture<BeanSearchResult<T>> executeAsync(FulltextSearch search, Class<T> c, Executor executor) {
    return CompletableFuture.supplyAsync(() -> this.execute(search, c), executor);
}
 
開發者ID:RBMHTechnology,項目名稱:vind,代碼行數:4,代碼來源:CompletableSearchServer.java

示例11: personNamesAsync

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
@GetMapping("/api/peopleAsync")
public CompletableFuture<Collection<String>> personNamesAsync() {
    return CompletableFuture.supplyAsync(() -> Collections.singletonList("jon"));
}
 
開發者ID:micrometer-metrics,項目名稱:micrometer,代碼行數:5,代碼來源:PersonController.java

示例12: execute

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
public CompletableFuture<ResultSet> execute(String cql) {
    return CompletableFuture.supplyAsync(() -> template.get().query(cql));
}
 
開發者ID:Kindrat,項目名稱:cassandra-client,代碼行數:4,代碼來源:CassandraClientAdapter.java

示例13: createIdentityAsync

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
@Override
public CompletableFuture<CreateIdentityResponseVO> createIdentityAsync(final CreateIdentityRequestVO request) {
    return CompletableFuture.supplyAsync(() -> createIdentity(request), getExecutorService());
}
 
開發者ID:enjin,項目名稱:Enjin-Coin-Java-SDK,代碼行數:5,代碼來源:IdentitiesAsyncServiceImpl.java

示例14: getAll

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
public CompletableFuture<ResultSet> getAll(String table) {
    return CompletableFuture.supplyAsync(() -> template.get().query(NStrings.format("select * from {}", table)));
}
 
開發者ID:Kindrat,項目名稱:cassandra-client,代碼行數:4,代碼來源:CassandraClientAdapter.java

示例15: getIdentityAsync

import java.util.concurrent.CompletableFuture; //導入方法依賴的package包/類
@Override
public CompletableFuture<GetIdentityResponseVO[]> getIdentityAsync(final GetIdentityRequestVO request) {
    return CompletableFuture.supplyAsync(() -> getIdentity(request), getExecutorService());
}
 
開發者ID:enjin,項目名稱:Enjin-Coin-Java-SDK,代碼行數:5,代碼來源:IdentitiesAsyncServiceImpl.java


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