基于ThreadPoolExecutor线程池实现多线程应用
/**
* @Description: 线程池常量
* @date: 2019-10-19
*/
public class ThreadPoolConstants {
public final static Integer CORE_POOL_SIZE = 20;
public final static Integer MAX_POOL_SIZE =40;
public final static Integer KEEP_ALIVE_TIME = 120;
public final static Integer WORK_QUEUE_SIZE =600;
}
/**
* @Description:
* @date: 2019-10-19
*/
public interface MyThreadPoolService {
Future submitTask(Callable callable);
void submitRunalbeTask(Runnable callable);
}
**
* @Description: 线程池实现
* @date: 2019-10-19
*/
@Service
public class MyThreadPoolServiceImpl implements MyThreadPoolService {
private ThreadPoolExecutor executors;
private void init() {
if (executors == null) {
executors = new ThreadPoolExecutor(ThreadPoolConstants.CORE_POOL_SIZE, ThreadPoolConstants.MAX_POOL_SIZE,
ThreadPoolConstants.KEEP_ALIVE_TIME, TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(ThreadPoolConstants.WORK_QUEUE_SIZE),
Executors.defaultThreadFactory(), new ThreadPoolExecutor.CallerRunsPolicy());
}
}
public ThreadPoolExecutor getExecutors() {
return executors;
}
/**
* 提交任务
*
* @param task
*/
public Future submitTask(Callable task) {
init();
return executors.submit(task);
}
@Override
public void submitRunalbeTask(Runnable task) {
init();
executors.submit(task);
}
}
/**
* 多线程task任务
*
* @param task
*/
public class SaveAdForumInvitationActivityTask implements Callable<SaveAdForumInvitationActivityTask> {
private static Logger logger = LoggerFactory.getLogger(SaveAdForumInvitationActivityTask.class);
private AdForumInvitationActivityDao adForumInvitationActivityDao;
private AdUserDao adUserDao;
private JSONObject jsonObject;
public SaveAdForumInvitationActivityTask() {
super();
}
public SaveAdForumInvitationActivityTask(AdForumInvitationActivityDao adForumInvitationActivityDao, AdUserDao adUserDao, JSONObject jsonObject) {
this.adForumInvitationActivityDao = adForumInvitationActivityDao;
this.adUserDao = adUserDao;
this.jsonObject = jsonObject;
}
@Override
public AdForumInvitationActivity call() throws Exception {
//do somthing
return adForumInvitation;
}
}
/**
* 调用多线程
*
*
*/
public class ServiceImpl implements ServiceI {
@Autowired
MyThreadPoolService myThreadPoolService;
@Override
@POST
public JSONObject registerAndLogin(JSONObject req) {
SaveAdForumInvitationActivityTask saveAdForumInvitationActivityTask = new SaveAdForumInvitationActivityTask(adForumInvitationActivityDao,adUserDao,req);
myThreadPoolService.submitTask(saveAdForumInvitationActivityTask);`在这里插入代码片`
}
}
spring boot java多线程实战
最新推荐文章于 2025-06-19 22:48:52 发布