Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-operate-sys-cscec
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fulixin
dsk-operate-sys-cscec
Commits
ce3a91c1
Commit
ce3a91c1
authored
Feb 23, 2024
by
lcl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
解决异步调用报错问题
parent
7b8853bd
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
9 deletions
+53
-9
AsyncConfig.java
...k/src/main/java/com/dsk/framework/config/AsyncConfig.java
+51
-7
CbProjectFileService.java
...main/java/com/dsk/cscec/service/CbProjectFileService.java
+2
-2
No files found.
dsk-framework/src/main/java/com/dsk/framework/config/AsyncConfig.java
View file @
ce3a91c1
...
...
@@ -8,10 +8,14 @@ import org.springframework.beans.factory.annotation.Qualifier;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.annotation.AsyncConfigurerSupport
;
import
org.springframework.scheduling.annotation.EnableAsync
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
org.springframework.web.context.request.RequestAttributes
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
java.util.Arrays
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ScheduledExecutorService
;
import
java.util.concurrent.ThreadPoolExecutor
;
/**
* 异步配置
...
...
@@ -22,16 +26,56 @@ import java.util.concurrent.ScheduledExecutorService;
@Configuration
public
class
AsyncConfig
extends
AsyncConfigurerSupport
{
@Autowired
@Qualifier
(
"scheduledExecutorService"
)
private
ScheduledExecutorService
scheduledExecutorService
;
// @Autowired
// @Qualifier("scheduledExecutorService")
// private ScheduledExecutorService scheduledExecutorService;
//
// /**
// * 自定义 @Async 注解使用系统线程池
// */
// @Override
// public Executor getAsyncExecutor() {
// return scheduledExecutorService;
// }
/**
* 自定义 @Async 注解使用系统线程池
*/
@Override
public
Executor
getAsyncExecutor
()
{
return
scheduledExecutorService
;
ThreadPoolTaskExecutor
taskExecutor
=
new
ThreadPoolTaskExecutor
();
// 核心线程数:线程池创建时候初始化的线程数
taskExecutor
.
setCorePoolSize
(
10
);
// 最大线程数:线程池最大的线程数,只有在缓冲队列满了之后才会申请超过核心线程数的线程
taskExecutor
.
setMaxPoolSize
(
20
);
// 缓冲队列:用来缓冲执行任务的队列
taskExecutor
.
setQueueCapacity
(
50
);
// 允许线程的空闲时间60秒:当超过了核心线程之外的线程在空闲时间到达之后会被销毁
taskExecutor
.
setKeepAliveSeconds
(
60
);
// 线程池名的前缀:设置好了之后可以方便我们定位处理任务所在的线程池
taskExecutor
.
setThreadNamePrefix
(
"HiTask-"
);
// 缓冲队列满了之后的拒绝策略:由调用线程处理(一般是主线程)
//taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
taskExecutor
.
setRejectedExecutionHandler
(
new
ThreadPoolExecutor
.
DiscardPolicy
());
taskExecutor
.
initialize
();
//解决使用@Async注解,获取不到上下文信息的问题
taskExecutor
.
setTaskDecorator
(
runnable
->
{
RequestAttributes
requestAttributes
=
RequestContextHolder
.
currentRequestAttributes
();
return
()->{
try
{
// 我们set 进去 ,其实是一个ThreadLocal维护的.
RequestContextHolder
.
setRequestAttributes
(
requestAttributes
);
runnable
.
run
();
}
finally
{
// 最后记得释放内存
RequestContextHolder
.
resetRequestAttributes
();
}
};
});
return
taskExecutor
;
}
/**
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/CbProjectFileService.java
View file @
ce3a91c1
...
...
@@ -50,8 +50,8 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
/**
* 查询项目文件解析列表
* @param projectId 项目ID
* @param cbType 成本
阶段(0:标前成本、1:标后成本、2:转固成本
)
* @param cbStage 成本
类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总
)
* @param cbType 成本
类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总
)
* @param cbStage 成本
阶段(0:标前成本、1:标后成本、2:转固成本
)
* @return
*/
List
<
CbProjectFile
>
selectAnalysisList
(
Long
projectId
,
Integer
cbType
,
Integer
cbStage
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment