Java:向某个线程发送执行

Java: send an execution to a certain thread

我正在研究线程,我想知道是否可以强制线程执行某些操作。

所以,问题是我有这样的方法:

public void asyncSleep() {
    Supplier<Boolean> sleeper = () -> {

        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
        }

        return true;
    };

    CompletableFuture<Boolean> promise = CompletableFuture.supplyAsync(sleeper, ex);
    promise.thenAccept(u -> {
        System.out.println("thread=" + Thread.currentThread());
    });
}

而且我需要原始线程(执行 asyncSleep() 方法的线程)成为执行 thenAccept 的线程。这可能吗?如果可以,我该怎么做?

如果您希望它以非阻塞方式工作,并且您仍然希望原始线程(执行 asyncSleep 的线程)也执行您传递给 thenAccept 的方法,那么唯一的方法如下:

您需要使用仅具有单线程的 ExecutorService。使用此执行程序执行 asyncSleep,但是随后,您必须将相同的执行程序作为第二个参数传递给 thenAcceptAsync(而不是 thenAccept)。

那么如果你的线程没有崩溃,也没有被新线程的执行者替换,那么执行这两种方法的线程应该是完全相同的。

但这是一个人为的用例。