java 板


LINE

最近写了一个 multi thread 程式 有使用到 ThreadPoolExecutor 之类的东西 也有用到 synchronized method 或是 lock 之类的东西 当然有程式有包含错误处理(try catch),目前使用没遇到状况 不过主管对程式有些看法是我不能理解的,以下模拟对话内容 主管: 万一Thread消失怎麽办? cyclone350: 消失? Thread 本身如果有错误,有 try catch 作错误处理 Thread 执行最外层也有执行错误处理 (送 mail, 写 log 之类的) 主管: 不,我是说 Thread 消失了,try catch 也不会知道,但是你的程式 却正常执行。 cyclone350: ......? 主管: 你要怎麽确保Thread不会消失? 或是让Thread消失後可以被侦测到? cyclone350: ...? 若 Thread 发生错误,有错误处理,我不了解消失是...? 主管: 就是Thread消失了,但是JVM没发觉,程式却正常执行的情况 cyclone350: ......? 如果 Thread 从系统里蒸发.. 而JVM却没察觉的话... 我的错误处理并没有防堵这种状况.... 主管: 必须想出一种机制能够让别人知道程式是正常运作的 ----------------------------------------------------------- 其实我私心觉得这种情况似乎不会发生,就算发生了好像也不会是ap的问题... 如果真的有这种情况发生了,那所有 multi thread 程式不就不用玩了? 呼叫 synchronized method 後消失... 那整个 application 不就挂点了? 全部都在 wait... lock机制也是一样... 我有去找 ThreadPoolExecutor 的 source code... 我看 Thread 也只是被 worker 包裹起来跑 try { task.run(); } catch (RuntimeException x) { thrown = x; throw x; } catch (Error x) { thrown = x; throw x; } catch (Throwable x) { thrown = x; throw new Error(x); } finally { afterExecute(task, thrown); } task 跑到一半会消失? 这甚麽道理? try catch 不就形同虚设了吗? 请问在开发 multi Thread 时真的会有这种情况发生吗? 如果真的有这情况,各位大大是怎麽处理? --------------------- 另外想请问程式暂停除了 Thread.sleep 还有其他的方式吗? 我最近有看 apache 某专案设定 time out 是用 Thread.sleep 或是用 while 回圈,里面是 thread.sleep 停止 1 ms 直到时间到为止 不过之後可能会被问一个问题 "万一 Thread.sleep 之後就起不来,然後程式也没跳任何错误 (意味 Exception 及 Error 不会 trigger),怎麽办?" 所以还蛮想找一个替代方案的 ----------------------- --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.192.133
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1421672239.A.D34.html
1F:→ mozzan: 我猜他可能对你的写法有些不认同,只是自己又说不上 01/19 22:54
2F:→ mozzan: 我只知道thread会饿死,还没听过会蒸发的 01/19 22:57
3F:推 Killercat: 他想问的是不是「thread跑完了 没通知」这样? 01/20 01:47
4F:→ swpoker: thread是官方提供的,除非vm消失,不然thread是不会消失的 01/20 09:49
5F:→ swpoker: 与其担心会消失,不如担心会dead lock 01/20 09:49
6F:推 ooooooo: 增加timeout机制 01/20 15:52
谢大家回应,结论就是 Thread 不会蒸发 :) n大及良葛格回应的可能情况在我的程式功能也有处理 另外 mozzan 大大说明的状况我想讨论一下 若 os 的排班制度很差的话,的确有可能全部会饿死 (永远执行不到) 但是以现在的 os 情况,在正常状况下会饿死吗? 我认为是不会的,毕竟 os 已经发展很长一段时间了, os 开发人员应该会极其避免这种状况且持续精进 所以换句话说,如果你开的Thread会饿死,那 os 也差不多要挂了 (loading到极限) 所以也不会是 ap 层要考虑的状况 以上是我的想法 ※ 编辑: cyclone350 (123.193.192.133), 01/20/2015 20:19:26







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灯, 水草

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

TOP