Redian新闻
>
java multi-threading issue比较tricky
avatar
java multi-threading issue比较tricky# Java - 爪哇娇娃
b*y
1
最近在工作当中遇到一个网站的bug, 在本地机器上测试都没发现过。花了好几天,才
发现是java multi-threading的问题,有个method需要加synchronized. 其实貌似很多
这样的问题都是thread引起的。早就应该想到。debug还是挺有意思的,类似玩儿游戏
。比较challenging.发发感想:
http://www.jiansnet.com/topic?id=23308
avatar
g*g
2
网站通常需要同步的地方还是比较少的,基于socket直接通讯
的server通常就要处理thread pool这些东西,碰到的问题会
比较多。

【在 b******y 的大作中提到】
: 最近在工作当中遇到一个网站的bug, 在本地机器上测试都没发现过。花了好几天,才
: 发现是java multi-threading的问题,有个method需要加synchronized. 其实貌似很多
: 这样的问题都是thread引起的。早就应该想到。debug还是挺有意思的,类似玩儿游戏
: 。比较challenging.发发感想:
: http://www.jiansnet.com/topic?id=23308

avatar
b*y
3
多谢goodbug点评。
I sometimes feel very frustrated if a bug couldn't be reproduced, or happens
once in a blue moon.
avatar
g*g
4
That's the common case in real world application unfortunately.
Many times you don't have enough log to know what's going on,
you first try to guess and see if you can reproduce, if all
fail, add more logging so hopefully you can figure out next
time.
If you suspect something and want to prove it, you can use
HtmlUnit to simulate http requests. It's pretty easy to use,
much better than JMeter, the latter is more of a performance
testing tool.
Another way to debug multiple thread issue in product

【在 b******y 的大作中提到】
: 多谢goodbug点评。
: I sometimes feel very frustrated if a bug couldn't be reproduced, or happens
: once in a blue moon.

avatar
k*r
5
介个问题感觉compiler/IDE理论上应该能抓住,如果他们想抓的话,给个warning之类
avatar
b*y
6
有时候觉得debug比写程序有意思。因为debug还可以多学习人家的程序。
avatar
c*t
7
碰到雷人的代码,debug 还是很累的。特别是该代码还很核心的时候,更累。
一次碰到多个 bug 的时候,还得一个个的 confirm (有感于一次 fix 某
bug,发现 3-4 个 bug 。。。)
几个月前一个 global variable 造成的 race condition 在有两人帮忙的情
况下还花了近一个月才找到问题。几星期后,另外一个 bug 后来发现是同一
variable 造成的。
还有一次绝的。Nightly build 1 有某一 bug,但是 NB2 没有。看了看当天
checked in 的几十个文件没有一个是直接有关的。后来证明 NB2 没出问题
是因为某 uninitated variable 出现一个“理想”的 stack ,而且每次都
是一样的 stack。

【在 b******y 的大作中提到】
: 有时候觉得debug比写程序有意思。因为debug还可以多学习人家的程序。
avatar
g*g
8
前些日子我重写了一个threadpool的核心代码,原来
的代码lock得太厉害了,改完了出了一堆race condition,
原来都是挨个走,不出毛病,这下顺畅了毛病就都出来了。

【在 c*****t 的大作中提到】
: 碰到雷人的代码,debug 还是很累的。特别是该代码还很核心的时候,更累。
: 一次碰到多个 bug 的时候,还得一个个的 confirm (有感于一次 fix 某
: bug,发现 3-4 个 bug 。。。)
: 几个月前一个 global variable 造成的 race condition 在有两人帮忙的情
: 况下还花了近一个月才找到问题。几星期后,另外一个 bug 后来发现是同一
: variable 造成的。
: 还有一次绝的。Nightly build 1 有某一 bug,但是 NB2 没有。看了看当天
: checked in 的几十个文件没有一个是直接有关的。后来证明 NB2 没出问题
: 是因为某 uninitated variable 出现一个“理想”的 stack ,而且每次都
: 是一样的 stack。

avatar
b*y
9

这个比较雷人啊。
我有时候就想,这程序动不动老有bug, 那你说飞机啥的,也很容易出问题呀。可能是
做啥的就对啥太仔细,但我现在对于人造的东西(飞机,比如说),都有恐惧感,呵呵
。好像学医的,看什么都有病菌似的。

【在 g*****g 的大作中提到】
: 前些日子我重写了一个threadpool的核心代码,原来
: 的代码lock得太厉害了,改完了出了一堆race condition,
: 原来都是挨个走,不出毛病,这下顺畅了毛病就都出来了。

avatar
m*t
10

那个丰田的油门好象就是控制软件的问题。

【在 b******y 的大作中提到】
:
: 这个比较雷人啊。
: 我有时候就想,这程序动不动老有bug, 那你说飞机啥的,也很容易出问题呀。可能是
: 做啥的就对啥太仔细,但我现在对于人造的东西(飞机,比如说),都有恐惧感,呵呵
: 。好像学医的,看什么都有病菌似的。

avatar
y*u
11
multi-threading只是一个很小的方面啊,做server第一个要考虑的就是
multithreading的问题。不管是不是webbased的

【在 b******y 的大作中提到】
: 最近在工作当中遇到一个网站的bug, 在本地机器上测试都没发现过。花了好几天,才
: 发现是java multi-threading的问题,有个method需要加synchronized. 其实貌似很多
: 这样的问题都是thread引起的。早就应该想到。debug还是挺有意思的,类似玩儿游戏
: 。比较challenging.发发感想:
: http://www.jiansnet.com/topic?id=23308

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。