I think that was meant to read “After this method returns _true_, subsequent 
calls …”

 

David

 

From: Concurrency-interest [mailto:concurrency-interest-boun...@cs.oswego.edu] 
On Behalf Of Viktor Klang
Sent: Sunday, September 25, 2016 9:03 PM
To: Martin Buchholz <marti...@google.com>
Cc: concurrency-interest <concurrency-inter...@cs.oswego.edu>; core-libs-dev 
<core-libs-dev@openjdk.java.net>
Subject: Re: [concurrency-interest] We need to add blocking methods to 
CompletionStage!

 

 

 

On Sun, Sep 25, 2016 at 12:34 PM, Viktor Klang <viktor.kl...@gmail.com 
<mailto:viktor.kl...@gmail.com> > wrote:

 

 

On Sat, Sep 24, 2016 at 10:41 PM, Martin Buchholz <marti...@google.com 
<mailto:marti...@google.com> > wrote:

No one is suggesting we add cancel to CompletionStage - I agree that would 
break users, by making an immutable interface mutable. 

 

+10000

 

This also means that CompletionStage cannot extend Future.

 

+10000

 

I also would not want to have a toFuture method that would return a 
j.u.c.Future, because of misfit Future.cancel.

 

Would you mind elaborating here? According to the cancel method spec on Future 
it is completely fine for it to be a no-op which always returns false:

 

"This attempt will fail if the task has already completed, has already been 
cancelled, or could not be cancelled for some other reason."

 

Source: 
https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html

 

There's an interesting (read: weird) spec clause in cancel:

 

"After this method returns, subsequent calls to isDone() will always return 
true. Subsequent calls to isCancelled() will always return true if this method 
returned true."

 

That clause is in contradiction with the previously quoted line.

 

 

 

 

  If we are adding cancel, then it will be to make a new interface, such as the 
suggested CancellableCompletionStage.

 

I also agree that CompletionStage does *not* represent "a running task of 
sorts", j.u.c. Future specs are still confusing in that way due to FutureTask 
heritage.

 

+10000

 

 

On Thu, Sep 22, 2016 at 7:51 PM, James Roper <ja...@lightbend.com 
<mailto:ja...@lightbend.com> > wrote:

For example, we often cache futures and return them from a libraries API, if a 
client could cancel a future, that would break everything else that received 
that future.

 

On Fri, Sep 23, 2016 at 2:24 PM, Viktor Klang <viktor.kl...@gmail.com 
<mailto:viktor.kl...@gmail.com> > wrote:

PPS: A misunderstanding is that CompletionStage represents a running task of 
sorts, one that can be cancelled etc. This is not the case.

 

 





 

-- 

Cheers,

√





 

-- 

Cheers,

√

Reply via email to