java 板


LINE

※ 引述《PTTCATKING (怀念美国猫王)》之铭言: : 标题: [问题] 请问有办法设定编号来决定排程吗 : 时间: Wed Nov 12 14:45:46 2014 : : 假设有二十个任务要跑 : : 而他在DB里会有两组编号(栏位名称) : : 第一组是1~20的流水号 : : 第二组是执行优先顺序(记录需等待的对象) : : A 跑完 同时执行 B & CD 两条线同时跑,而B会先跑完,但要等CD都跑完後,BCD都结束 : 才开始跑E : : A的编号就是 1 0 (无等待对象) : : B的编号就是 2 1 (等待A,1是A的编号) : : C的编号就是 3 1 (等待A,1是A的编号) : : D的编号就是 4 3 (等待C,3是C的编号) : : E的编号就是 5 2 (等待B,2是B的编号) : : E的编号就是 5 4 (等待D,4是D的编号) : : 因为E要等两个,所以在DB里 E 会有两笔资料 : : : 请问 有没有什麽现有套件有能够执行这件事情呢 : : 设定那两个编号,则程式执行後就按照两个编号,决定程式优先顺序,并有可能同时执行 : 多程序 : : 以後维护就是设定编号就能决定跑程式的优先顺序 : : : 今天用CountDownLatch写出类似的东西,被认为是写死的东西orz : : 这是用排程器???或是什麽方向呢?? @O@ : : 能否有高手指点明灯给我方向,谢谢 T_T : : -- :



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.66.159.143
: ※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1415774748.A.B71.html : → swpoker: 我想是你程式写法的问题~先把你CODE放上来吧 11/12 14:53 : : final CountDownLatch beginA = new CountDownLatch(1); : final CountDownLatch end = new CountDownLatch(2); : final CountDownLatch endE = new CountDownLatch(1); : final ExecutorService exec = Executors.newFixedThreadPool(3); : ※ 编辑: PTTCATKING (42.66.159.143), 11/12/2014 14:59:15 : : 这样写大概就是 A跑完後开始跑 B跟C ,C跑完跑D ,BCD都跑完最後才跑E : : 只是实际上的需求是要用资料库里 两个编号来决定优先顺序 : : 而修改第两个编号可能每只程式的执行顺序就会改变 我不知道什麽是 CountDownLatch, 也不清楚 ExecutorService 但是也许可以讲一下要如何做出更动态的程式 先假设你的 CountDownLatch 与 ExecutorService 理解没有错误 以这个例子来讲解 也许会对你有帮助 第一步,先想想你的api要呼叫,先不要管实作,只要考虑怎麽呼叫就好 然後定出 interface。 就以你这个例子,我希望我的 api 会是这样呼叫 public class MyProcess { public void process() { ExecutorService exec = ExecutorServiceBuilder .addProcess(A.class) .waitToGo(B.class, "A") .waitToGo(C.class, "A") .waitToGo(D.class, "C") .waitToGo(E.class, "D", "B") .build(); exec.submitAll(); } } // 以上程式码顶多算pseudo code 接下来就是根据每个 method 去实作它,这样不管在怎麽不弹性,在怎麽死 对使用 api 的人来讲都是够弹性的,假设你後来真的找到一个已经存在 lib 有此功能 也可以把 ExecutorServiceBuilder 当成是 lib 的一个 adapt 或是 proxy 以上只是举例,事实上实作时也不一定要用 ExecutorService。 假设你是要用 CountDownLatch 来做的话 CountDownLatch 的值改成 method input 的值就好 例如 public ExecutorServiceBuilder waitToGo(Class runner, String... waitNames) throws Exeception { registerName(runner); //注册名称 checkValid(waitNames); // 检查等待的名称是否正确,若错误则喷 Exeception updateCountDownValue(waitNames); // 把每一种 countDownLatch 值更新 } 类似这样... 把要做的事情都写出来,最後在一个一个独立出来实作 不知道有没有帮助... 我猜应该没甚麽帮助 XD : : 跪求神手指点名灯 T_T : ※ 编辑: PTTCATKING (42.66.159.143), 11/12/2014 17:40:05 : → ssccg: 有一定要先开跑再wait再那边的理由吗? 11/12 20:12 : → ssccg: 前一个跑完後select出所有该接它後面跑的来跑不行? 11/12 20:14 : 推 yyc1217: 有点类似无限状态机(FSM)的感觉 11/12 21:06 : → yyc1217: 另外用一个singleton的manager来做state之间的管理? 11/12 21:07 : → luoqr: 跑完的去通知在等他的那些人开动不行吗? :S 11/12 21:24 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.192.133
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/java/M.1415809495.A.9C0.html
1F:→ NewSpec: "pseudo code" 11/13 02:25
已修正 ※ 编辑: cyclone350 (123.193.192.133), 11/13/2014 02:34:57
2F:→ swpoker: stream超好用的~我本来也是这样想 11/13 11:19







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP