[ https://issues.apache.org/jira/browse/LANG-1611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17264566#comment-17264566 ]
Andrey Fadeev edited comment on LANG-1611 at 1/14/21, 10:51 AM: ---------------------------------------------------------------- If there's only one token for an {{Initializer}} instance, why not trigger initialization simply by calling the {{get()}} method, like in the {{AtomicInitializer}} but using check for expiration instead of a {{null}} check? {code:java} @Override public T get() throws ConcurrentException { T result = reference.get(); if (result == null) { result = initialize(); if (!reference.compareAndSet(null, result)) { // another thread has initialized the reference result = reference.get(); } } return result; }{code} was (Author: andrey fadeev): If there's only one token for an {{Initializer}} instance, why not trigger initialization simply by calling the {{get()}} method, like in the {{AtomicInitializer,}} but using check for expiration instead of a {{null}}? {code:java} @Override public T get() throws ConcurrentException { T result = reference.get(); if (result == null) { result = initialize(); if (!reference.compareAndSet(null, result)) { // another thread has initialized the reference result = reference.get(); } } return result; }{code} > Add an initializer which can compare and re-initialize value > ------------------------------------------------------------ > > Key: LANG-1611 > URL: https://issues.apache.org/jira/browse/LANG-1611 > Project: Commons Lang > Issue Type: New Feature > Components: lang.concurrent.* > Reporter: Franz Wong > Priority: Minor > > I would like to have a new class which is similar to > {{AtomicSafeInitializer}}. But we can compare and re-initialize the value. > The use case is to refresh access token (e.g. OAuth) when it expires. > Multiple threads tries to refresh the same token at the same time, but there > should be only one thread to do it, in addition, only the thread which passes > the expired token can trigger the initialization. -- This message was sent by Atlassian Jira (v8.3.4#803005)