Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 重复使用静态属性CompletableFuture是否安全。completedFuture(单位)_Java_Kotlin_Completable Future - Fatal编程技术网

Java 重复使用静态属性CompletableFuture是否安全。completedFuture(单位)

Java 重复使用静态属性CompletableFuture是否安全。completedFuture(单位),java,kotlin,completable-future,Java,Kotlin,Completable Future,我应该在某个静态类中定义CompletableFuture.completedFuture(Unit)并在所有代码中重用它,以避免再次调用CompletableFuture.completedFuture(Unit),还是在每个future.thenSomething调用之后都不是相同的CompletableFuture?(我不希望每次使用后都有无限增长的回调队列的静态属性) 我发现CompletableFuture只有两个变量,它们不是静态的或最终的,但我不确定我是否能够比community更

我应该在某个静态类中定义CompletableFuture.completedFuture(Unit)并在所有代码中重用它,以避免再次调用CompletableFuture.completedFuture(Unit),还是在每个future.thenSomething调用之后都不是相同的CompletableFuture?(我不希望每次使用后都有无限增长的回调队列的静态属性)

我发现CompletableFuture只有两个变量,它们不是静态的或最终的,但我不确定我是否能够比community更快地找到答案,而且我也没有发现类似的问题,因此我将这一问题发布给未来的读者

volatile Object result;
volatile CompletableFuture.Completion stack;

Unit
没有定义。像这样的轻量级对象在将来总是会被重用,这是没有意义的。现在还不清楚为什么你们经常需要这样一个未来,以至于你们甚至都在考虑它。“一个公平的异步读写锁,它不会旋转或阻塞线程”包含多个自相矛盾的地方。显然,你唯一真正要做的就是把任务提交给执行者。完整的未来并没有给这个过程增加任何东西。在整个冗长的描述中,没有一个提到
CompletableFuture
应该做什么,q.e.d.此外,这个逻辑显然不能保证公平性,也不包含读写锁逻辑。一个
原子布尔
只有两种状态,因此,不能是读/写锁,点。将问题缩小到“重用已经完成的未来是否安全”,答案是,只要代码表现良好,而不是使用
obtrude…
方法,就可以了。您还可以创建一个子类来覆盖
obtrude…
方法,以使其真正安全。但这仍然不值得付出努力,因为它可能会保存只包含两个字段的临时对象的创建。