W***o 发帖数: 6519 | 1 以前一直懒得看java concurrency 这部分,
刚才翻看了一下,感觉理解很容易,
以前用C写过一个thread library,
再看java multithreaded programming觉得容易多了,
不知是不是因为我不够踏实半瓶醋。
请大牛指点要点和难点哦? |
d****i 发帖数: 4809 | 2 没错,Java的thread底层实现就是OS native thread,所以你理解了C的thread, Java
的自然就容易理解多了。
【在 W***o 的大作中提到】 : 以前一直懒得看java concurrency 这部分, : 刚才翻看了一下,感觉理解很容易, : 以前用C写过一个thread library, : 再看java multithreaded programming觉得容易多了, : 不知是不是因为我不够踏实半瓶醋。 : 请大牛指点要点和难点哦?
|
d****i 发帖数: 4809 | 3 所以还是回到我说的那句话,看看APUE这本经典的系统编程的宝典,哪怕你工作中不用
C来做系统底层编程,还是大有益处。
Java
【在 d****i 的大作中提到】 : 没错,Java的thread底层实现就是OS native thread,所以你理解了C的thread, Java : 的自然就容易理解多了。
|
c*********e 发帖数: 16335 | 4 说说你咋判断有没有deadlock
【在 W***o 的大作中提到】 : 以前一直懒得看java concurrency 这部分, : 刚才翻看了一下,感觉理解很容易, : 以前用C写过一个thread library, : 再看java multithreaded programming觉得容易多了, : 不知是不是因为我不够踏实半瓶醋。 : 请大牛指点要点和难点哦?
|
W***o 发帖数: 6519 | 5 这个可以用比较经典的“几个哲学家用筷子吃饭”的例子来打个比方,奇数编号的哲学
家先用左手拿起筷子,lock,然后看看右手的筷子有没有free;偶数编号的哲学家先用
右手拿起筷子,lock,然后等左手的筷子,这样协调吃饭就不会有deadlock,当然这个
不是最优解法(懒得去想当时是怎么做的),因为有的哲学家吃了1000次,有的哲学家
只吃了1次,但是这个不仅避免了deadlock,也避免了starvation.
如果是两个threads 要处理一个shared resources, 可以用两把锁(L1, L2), 而且规
定必须是先获得L1, lock, 再获得L2, lock, (用round robin ?? - unsure) 然后处
理resources。如果一个thread 只看到L2 free, 规定它不能acquire L2.
这样判断对吗?或者请大牛说说更简单的方法?
【在 c*********e 的大作中提到】 : 说说你咋判断有没有deadlock
|
s****y 发帖数: 503 | 6
你都看了那些?
【在 W***o 的大作中提到】 : 以前一直懒得看java concurrency 这部分, : 刚才翻看了一下,感觉理解很容易, : 以前用C写过一个thread library, : 再看java multithreaded programming觉得容易多了, : 不知是不是因为我不够踏实半瓶醋。 : 请大牛指点要点和难点哦?
|
g*****g 发帖数: 34805 | 7 难点在于复杂并发下出现 race condition的 debug. 没法重现,IDE更无用。基本靠看
thread dump 和经验猜。
【在 W***o 的大作中提到】 : 以前一直懒得看java concurrency 这部分, : 刚才翻看了一下,感觉理解很容易, : 以前用C写过一个thread library, : 再看java multithreaded programming觉得容易多了, : 不知是不是因为我不够踏实半瓶醋。 : 请大牛指点要点和难点哦?
|
p***o 发帖数: 1252 | 8 APUE不讲pthread把 ...
【在 d****i 的大作中提到】 : 所以还是回到我说的那句话,看看APUE这本经典的系统编程的宝典,哪怕你工作中不用 : C来做系统底层编程,还是大有益处。 : : Java
|
W***o 发帖数: 6519 | 9 我记得讲一点点
【在 p***o 的大作中提到】 : APUE不讲pthread把 ...
|
b*******s 发帖数: 5216 | 10 最简单就是顺序锁或者无锁结构
【在 c*********e 的大作中提到】 : 说说你咋判断有没有deadlock
|
d****i 发帖数: 4809 | 11 当然有pthread,这个是UNIX和Linux的重要组成部分之一啊,只不过以前很多东西在不
同的UNIX下面由于实现不同,加上接口函数的名字又不同,后来Open Group和Single
UNIX Specification把他们逐步标准化和统一接口了。
【在 p***o 的大作中提到】 : APUE不讲pthread把 ...
|
M*****R 发帖数: 650 | 12 I learned a tip on debugging threading issues.
We can associate a helper exception object for the shared data
member. This helper exception object is used to take a snapshot of the call
stack whenever the data member's state is changed to an interesting state.
This way, we can record a sequence of call stack snapshots that modified
that state. This can be very helpful.
【在 g*****g 的大作中提到】 : 难点在于复杂并发下出现 race condition的 debug. 没法重现,IDE更无用。基本靠看 : thread dump 和经验猜。
|