业务是这样的 并发大概在1000个任务左右 任务A生成后需要倒计时5分钟执行一个DB操作+推送(提醒)+邮件。倒计时10分钟时执行一个DB操作+推送+邮件+任务数据的销毁。有以下几个方案:
方案1:任务生成时记录开始时间,使用定时器或Timer控件的时候,1s执行一次,内部执行方法使用线程池异步执行,判断间隔时间,更改操作。1s取一次redis。
方案2:利用工厂模式,每次创建一个 任务--任务处理 的绑定 while 用程序去控制这个任务的处理。
针对以上的情况,请各位大神,帮忙分析一下对系统的硬件要求,以及如何优化和需要注意什么地方
1s取一次?while(true)一直判断?不用这么麻烦,java直接就能实现
1.将5分钟时要执行的操作写成一个线程A。将10分钟时执行的操作写成一个线程B。
2.线程A中run方法刚开始直接thread.sleep(5分钟)。线程B中sleep10分钟。
3.创建一个任务执行线程C。run方法中调用A和B。
4..创建一个线程池。(数量,等待队列,线程全忙时处理策略这些自己根据瓶颈自己设定);
4.任务进来。线程池执行线程C