core/src/main/java/org/springframework/security/concurrent/DelegatingSecurityContextCallable.java
public static <V> Callable<V> create(Callable<V> delegate,
			SecurityContext securityContext) {
		return securityContext == null ? new DelegatingSecurityContextCallable<>(
				delegate) : new DelegatingSecurityContextCallable<>(delegate,
				securityContext);
	}
public static <V> Callable<V> create(Callable<V> delegate,
			SecurityContext securityContext) {
		return securityContext == null ? new DelegatingSecurityContextCallable<>(
				delegate) : new DelegatingSecurityContextCallable<>(delegate,
				securityContext);
	}
Creates a {@link DelegatingSecurityContextCallable} and with the given
{@link Callable} and {@link SecurityContext}, but if the securityContext is null
will defaults to the current {@link SecurityContext} on the
{@link SecurityContextHolder}

@param delegate the delegate {@link DelegatingSecurityContextCallable} to run with
the specified {@link SecurityContext}. Cannot be null.
@param securityContext the {@link SecurityContext} to establish for the delegate
{@link Callable}. If null, defaults to {@link SecurityContextHolder#getContext()}
@return