每当我使用以下命令启动定序器时:
Sequencer sequencer = MidiSystem.getSequencer();
sequencer.open();
// code....
sequencer.start();
sequencer.close(); //it closes the sequencer immediately with no sound being played
如何确保sequencer已经播放完声音,然后调用close()方法?我不想使用时间延迟。
我读过和,我知道这个概念是
你可以把期货和承诺看作是管道的两个不同的侧面。在承诺方面,数据被推入,而在未来方面,数据可以被提取出来。
现在,我想知道如何使用Java 8的CompletableFuture来做同样的事情。
示例代码:
Promise<String> promise = new Promise.DefaultPromise<>();
listOfString.stream().forEach(oneString -> {
promise.trySuccess(oneString);
});
//..... some other com
我使用Java8 steam和CompletableFuture请求方法来获取返回值,是什么导致了这个异常?我现在不能重现这个异常:
异常堆栈
java.lang.IllegalStateException
at java.util.stream.Nodes$FixedNodeBuilder.end(Nodes.java:1232)
at java.util.stream.Sink$ChainedReference.end(Sink.java:258)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:
我有几个线程类,它们使用不同的比较方法。我已经将它们实现为扩展抽象类。例如,
public abstract class MatcherThread implements Runnable{
List<String> clusters;
int output;
public MatcherThread(List<String> clusters){
this.clusters = clusters;
}
public void run()
{
for(List<String>
在Java中构建一个完整的未来的最佳方式是什么?我已经在下面实现了我自己的CompletedFuture,但我希望已经存在这样的东西。
public class CompletedFuture<T> implements Future<T> {
private final T result;
public CompletedFuture(final T result) {
this.result = result;
}
@Override
public boolean cancel(final boolean
最近,我正在尝试实现一个电子邮件服务,它同时向每个用户发送电子邮件。我当前的实现当前如下所示:
ExecutorService executor = Executors.newSingleThreadExecutor();
tasks.forEach(executor::execute); // Each task sends an email to an user
executorService.shutdown(); // Reclaim all the resources
经过一些研究,我找到了一种新的方法,使用Java8 CompletableFuture.runAsync(...)方
给予:
public class Test
{
public static void main(String[] args)
{
int nThreads = 1;
Executor e = Executors.newFixedThreadPool(nThreads);
CompletableFuture.runAsync(() ->
{
System.out.println("Task 1. Thread: " + Thread.currentThread().ge
在java-9中,引入了CompletableFuture类中的CompletableFuture:
public CompletableFuture<T> completeOnTimeout(T value, long timeout,
TimeUnit unit) {
if (unit == null)
throw new NullPointerException();
if (result == null)
whenComplete(ne
当将两个独立的CompletableFuture与返回第三个BiFunction的BiFunction组合时,我试图避免嵌套one。目前,使用thenCombine()并不会削减它:
// What I have
public CompletableFuture<CompletableFuture<C>> doStuff() {
CompletableFuture<A> aFuture = makeSomeA();
CompletableFuture<B> bFuture = makeSomeB();
Completabl
我正在处理Java8 8的流和CompletableFuture。我以前存在的代码有一个类,它接受一个URL并下载它:
public class FileDownloader implements Runnable {
private URL target;
public FileDownloader(String target) {
this.target = new URL(target);
}
public void run() { /* do it */ }
}
现在,这个类从发出List<String>的另一个部分获取它的信
我读到过CompletableFuture有能力将多个期货与runAfterBoth合并,但如果我想合并超过两个呢?
CompletableFuture<Boolean> a = new CompletableFuture<>();
CompletableFuture<Boolean> b = new CompletableFuture<>();
CompletableFuture<Boolean> c = new CompletableFuture<>();
List<CompletableFuture<B
我希望等待多个事件,并决定尝试用CompletableFuture实现这一点。
CompletableFuture a1 = new CompletableFuture();
CompletableFuture a2 = new CompletableFuture();
CompletableFuture a3 = new CompletableFuture();
CompletableFuture b = new CompletableFuture();
CompletableFuture subFuturesA= CompletableFuture.allOf(a1, a2, a3);
C
在CompletableFuture.supplyAsync()的生产环境中发现了一个问题,我们有一个批处理方法,如下所示:
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
public class CompletableFutureProblem {
public voi
由于以下错误,我在使用getPrice()方法返回汽车价格值时遇到了问题:
no instance(s) of type variable(s) U exist so that CompletableFuture<U> conforms to Double inference variable U has incompatible bounds: equality constraints: Double lower bounds: CompletableFuture<U81345>
我希望getPrice返回CompletableFuture<Double>