How do non-blocking concurrent collections in Java typically indicate an unsuccessful operation?
By automatically retrying the operation
By throwing an exception
By blocking the thread until the operation can succeed
By returning a null value