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