org.springframework.core.task.AsyncTaskExecutor#submit ( )源码实例Demo

下面列出了org.springframework.core.task.AsyncTaskExecutor#submit ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

/**
 * Delegate for actually executing the given task with the chosen executor.
 * @param task the task to execute
 * @param executor the chosen executor
 * @param returnType the declared return type (potentially a {@link Future} variant)
 * @return the execution result (potentially a corresponding {@link Future} handle)
 */
@Nullable
protected Object doSubmit(Callable<Object> task, AsyncTaskExecutor executor, Class<?> returnType) {
	if (CompletableFuture.class.isAssignableFrom(returnType)) {
		return CompletableFuture.supplyAsync(() -> {
			try {
				return task.call();
			}
			catch (Throwable ex) {
				throw new CompletionException(ex);
			}
		}, executor);
	}
	else if (ListenableFuture.class.isAssignableFrom(returnType)) {
		return ((AsyncListenableTaskExecutor) executor).submitListenable(task);
	}
	else if (Future.class.isAssignableFrom(returnType)) {
		return executor.submit(task);
	}
	else {
		executor.submit(task);
		return null;
	}
}
 
/**
 * Delegate for actually executing the given task with the chosen executor.
 * @param task the task to execute
 * @param executor the chosen executor
 * @param returnType the declared return type (potentially a {@link Future} variant)
 * @return the execution result (potentially a corresponding {@link Future} handle)
 */
@Nullable
protected Object doSubmit(Callable<Object> task, AsyncTaskExecutor executor, Class<?> returnType) {
	if (CompletableFuture.class.isAssignableFrom(returnType)) {
		return CompletableFuture.supplyAsync(() -> {
			try {
				return task.call();
			}
			catch (Throwable ex) {
				throw new CompletionException(ex);
			}
		}, executor);
	}
	else if (ListenableFuture.class.isAssignableFrom(returnType)) {
		return ((AsyncListenableTaskExecutor) executor).submitListenable(task);
	}
	else if (Future.class.isAssignableFrom(returnType)) {
		return executor.submit(task);
	}
	else {
		executor.submit(task);
		return null;
	}
}
 
源代码3 项目: lams   文件: AsyncExecutionAspectSupport.java
/**
 * Delegate for actually executing the given task with the chosen executor.
 * @param task the task to execute
 * @param executor the chosen executor
 * @param returnType the declared return type (potentially a {@link Future} variant)
 * @return the execution result (potentially a corresponding {@link Future} handle)
 */
protected Object doSubmit(Callable<Object> task, AsyncTaskExecutor executor, Class<?> returnType) {
	if (completableFuturePresent) {
		Future<Object> result = CompletableFutureDelegate.processCompletableFuture(returnType, task, executor);
		if (result != null) {
			return result;
		}
	}
	if (ListenableFuture.class.isAssignableFrom(returnType)) {
		return ((AsyncListenableTaskExecutor) executor).submitListenable(task);
	}
	else if (Future.class.isAssignableFrom(returnType)) {
		return executor.submit(task);
	}
	else {
		executor.submit(task);
		return null;
	}
}
 
/**
 * Delegate for actually executing the given task with the chosen executor.
 * @param task the task to execute
 * @param executor the chosen executor
 * @param returnType the declared return type (potentially a {@link Future} variant)
 * @return the execution result (potentially a corresponding {@link Future} handle)
 */
protected Object doSubmit(Callable<Object> task, AsyncTaskExecutor executor, Class<?> returnType) {
	if (completableFuturePresent) {
		Future<Object> result = CompletableFutureDelegate.processCompletableFuture(returnType, task, executor);
		if (result != null) {
			return result;
		}
	}
	if (ListenableFuture.class.isAssignableFrom(returnType)) {
		return ((AsyncListenableTaskExecutor) executor).submitListenable(task);
	}
	else if (Future.class.isAssignableFrom(returnType)) {
		return executor.submit(task);
	}
	else {
		executor.submit(task);
		return null;
	}
}
 
源代码5 项目: lams   文件: LocalSessionFactoryBuilder.java
public BootstrapSessionFactoryInvocationHandler(AsyncTaskExecutor bootstrapExecutor) {
	this.sessionFactoryFuture = bootstrapExecutor.submit(new Callable<SessionFactory>() {
		@Override
		public SessionFactory call() throws Exception {
			return buildSessionFactory();
		}
	});
}
 
@Override
public void afterPropertiesSet() throws PersistenceException {
	JpaVendorAdapter jpaVendorAdapter = getJpaVendorAdapter();
	if (jpaVendorAdapter != null) {
		if (this.persistenceProvider == null) {
			this.persistenceProvider = jpaVendorAdapter.getPersistenceProvider();
		}
		PersistenceUnitInfo pui = getPersistenceUnitInfo();
		Map<String, ?> vendorPropertyMap = (pui != null ? jpaVendorAdapter.getJpaPropertyMap(pui) :
				jpaVendorAdapter.getJpaPropertyMap());
		if (!CollectionUtils.isEmpty(vendorPropertyMap)) {
			vendorPropertyMap.forEach((key, value) -> {
				if (!this.jpaPropertyMap.containsKey(key)) {
					this.jpaPropertyMap.put(key, value);
				}
			});
		}
		if (this.entityManagerFactoryInterface == null) {
			this.entityManagerFactoryInterface = jpaVendorAdapter.getEntityManagerFactoryInterface();
			if (!ClassUtils.isVisible(this.entityManagerFactoryInterface, this.beanClassLoader)) {
				this.entityManagerFactoryInterface = EntityManagerFactory.class;
			}
		}
		if (this.entityManagerInterface == null) {
			this.entityManagerInterface = jpaVendorAdapter.getEntityManagerInterface();
			if (!ClassUtils.isVisible(this.entityManagerInterface, this.beanClassLoader)) {
				this.entityManagerInterface = EntityManager.class;
			}
		}
		if (this.jpaDialect == null) {
			this.jpaDialect = jpaVendorAdapter.getJpaDialect();
		}
	}

	AsyncTaskExecutor bootstrapExecutor = getBootstrapExecutor();
	if (bootstrapExecutor != null) {
		this.nativeEntityManagerFactoryFuture = bootstrapExecutor.submit(this::buildNativeEntityManagerFactory);
	}
	else {
		this.nativeEntityManagerFactory = buildNativeEntityManagerFactory();
	}

	// Wrap the EntityManagerFactory in a factory implementing all its interfaces.
	// This allows interception of createEntityManager methods to return an
	// application-managed EntityManager proxy that automatically joins
	// existing transactions.
	this.entityManagerFactory = createEntityManagerFactoryProxy(this.nativeEntityManagerFactory);
}
 
public BootstrapSessionFactoryInvocationHandler(AsyncTaskExecutor bootstrapExecutor) {
	this.sessionFactoryFuture = bootstrapExecutor.submit(
			(Callable<SessionFactory>) LocalSessionFactoryBuilder.this::buildSessionFactory);
}
 
@Override
public void afterPropertiesSet() throws PersistenceException {
	JpaVendorAdapter jpaVendorAdapter = getJpaVendorAdapter();
	if (jpaVendorAdapter != null) {
		if (this.persistenceProvider == null) {
			this.persistenceProvider = jpaVendorAdapter.getPersistenceProvider();
		}
		PersistenceUnitInfo pui = getPersistenceUnitInfo();
		Map<String, ?> vendorPropertyMap = (pui != null ? jpaVendorAdapter.getJpaPropertyMap(pui) :
				jpaVendorAdapter.getJpaPropertyMap());
		if (!CollectionUtils.isEmpty(vendorPropertyMap)) {
			vendorPropertyMap.forEach((key, value) -> {
				if (!this.jpaPropertyMap.containsKey(key)) {
					this.jpaPropertyMap.put(key, value);
				}
			});
		}
		if (this.entityManagerFactoryInterface == null) {
			this.entityManagerFactoryInterface = jpaVendorAdapter.getEntityManagerFactoryInterface();
			if (!ClassUtils.isVisible(this.entityManagerFactoryInterface, this.beanClassLoader)) {
				this.entityManagerFactoryInterface = EntityManagerFactory.class;
			}
		}
		if (this.entityManagerInterface == null) {
			this.entityManagerInterface = jpaVendorAdapter.getEntityManagerInterface();
			if (!ClassUtils.isVisible(this.entityManagerInterface, this.beanClassLoader)) {
				this.entityManagerInterface = EntityManager.class;
			}
		}
		if (this.jpaDialect == null) {
			this.jpaDialect = jpaVendorAdapter.getJpaDialect();
		}
	}

	AsyncTaskExecutor bootstrapExecutor = getBootstrapExecutor();
	if (bootstrapExecutor != null) {
		this.nativeEntityManagerFactoryFuture = bootstrapExecutor.submit(this::buildNativeEntityManagerFactory);
	}
	else {
		this.nativeEntityManagerFactory = buildNativeEntityManagerFactory();
	}

	// Wrap the EntityManagerFactory in a factory implementing all its interfaces.
	// This allows interception of createEntityManager methods to return an
	// application-managed EntityManager proxy that automatically joins
	// existing transactions.
	this.entityManagerFactory = createEntityManagerFactoryProxy(this.nativeEntityManagerFactory);
}
 
public BootstrapSessionFactoryInvocationHandler(AsyncTaskExecutor bootstrapExecutor) {
	this.sessionFactoryFuture = bootstrapExecutor.submit(
			(Callable<SessionFactory>) LocalSessionFactoryBuilder.this::buildSessionFactory);
}