场景是这样(类别):
有 add,query,update 三个命令单独执行时互相不依赖
1.执行add,query 就必须等所有的add命令执行完毕后才能执行query命令
2.执行add update,query 必须等所有的add命令完毕-update命令完毕-query命令
线程池的大小动态设置,add update为 记录数的1/2 query为记录数
现在的设计是采用java的 java.util.concurrent.Executors;import java.util.concurrent.Future;来实现,队列是有界队列
假设10条命令 add ,10条query
首先执行设置线程池大小为5,提交10条add命令道线程队列里
启动监控线程监控命令是否执行完毕(数据库是否有值),如果探测到10条add语句都执行完毕,就将query提交到线程队列中
线程库有提供future.get方法 查看执行结果,但是会阻塞,需要异步去触发query命令,所以才会有启动监控线程去增加新的命令
如果是 add -update -query 命令
就必须增加两个监控线程,首先提交add,监控线程探测执行完毕后心中 update命令
query监控线程执行queruy命令.
因为是线程依赖,如果其中有部分结果一直没返回,就会死锁,请教大家有没有什么好的设计
如果上面我写的不明白,简单说就是
有个任务给你,收集10个垃圾,然后杀了他们.马上反馈你是不是在做事
你:
1并发收集10个人信息,并马上返回我正在收集10个人的信息 (异步,多线程)
2.10个人信息收集完毕,执行杀人计划,拔5跟猴毛变成你去杀人(异步,5个线程)
3... 不断的通知你的老板现在到哪一步了
大概就是这样