【发布时间】:2020-08-26 05:00:51
【问题描述】:
我从事一个小型测试项目,以检查异步编程在 Java 中的实际工作方式。
我试图在控制台上显示结果,但在控制台上什么也没显示。也许主线程将立即执行并关闭。你能给我一个更好的方法来在控制台上显示消息吗?
Task5 类
class Task5
{
public String task1()
{
return "Hello Benz";
}
public String task2(String msg)
{
return msg+" How are you?";
}
public String task3(String msg)
{
return msg+" Not Bad, How are you Jhon?";
}
}
Task4 类
class Task4 implements Runnable
{
private String msg;
public Task4(String msg)
{
this.msg=msg;
Thread th1=new Thread(this);
th1.start();
}
@Override
public void run() {
consumer.accept(msg);
}
Consumer<String> consumer=new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
}
AsyncProgram 类
public class AsyncProgram2 {
public void start()
{
for(int i=1;i<=1000;i++) {
CompletableFuture.supplyAsync(() -> new Task5().task1())
.thenApply(name -> new Task5().task2(name))
.thenApply(res1 -> new Task5().task3(res1))
.thenAccept(res3 -> new Task4(res3));
}
}
}
也很高兴知道:由于我对所有这些反应性的东西都是新手,是否可以更好地在不阻塞的情况下编写代码?
【问题讨论】:
-
它应该工作你如何开始这个?
-
通过main方法
-
所以我复制粘贴了你的代码,它可以工作。它按预期显示消息。
标签: java asynchronous reactive-programming