spring boot java多线程实战

ぃ、小莉子 提交于 2019-11-28 01:25:44

基于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);`在这里插入代码片`

   }

}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!