由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 关于死锁疑问
相关主题
Java编程讨论:LinkedIn的H2O狗狗电面
菜鸟请教多线程怎么学关于java synchronized statement和static method or variable
问个thread synchronization的问题报个vmware电面攒人品
Java concurrency 面试题Amazon一道synchronization的面试题
电话面试 - 是不是被阴了?一个系统设计问题
java concurrence 例子M onsite面经
求问一道multithreading问题一道多线程的面试题
高频题:下面这lru的code 怎么改成有效率且thread-safe的版本有一道Java多线程的面试题能不能帮我看看?
相关话题的讨论汇总
话题: friend话题: string话题: public话题: void话题: alphonse
进入JobHunting版参与讨论
1 (共1页)
k****r
发帖数: 807
1
这个死锁的例子,为什么会发生呢?bow里面的bower.bowBack(this)为什么会被block
住呢,不是两个bow function都synchronized了吗?难道说instance的另一个bowBack
也被syn了吗?
concurrency小白,勿怪。
static class Friend {
private final String name;
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public synchronized void bow(Friend bower) {
System.out.format("%s: %s"
+ " has bowed to me!%n",
this.name, bower.getName());
bower.bowBack(this);
}
public synchronized void bowBack(Friend bower) {
System.out.format("%s: %s"
+ " has bowed back to me!%n",
this.name, bower.getName());
}
}
public static void main(String[] args) {
final Friend alphonse =
new Friend("Alphonse");
final Friend gaston =
new Friend("Gaston");
new Thread(new Runnable() {
public void run() { alphonse.bow(gaston); }
}).start();
new Thread(new Runnable() {
public void run() { gaston.bow(alphonse); }
}).start();
}
z****e
发帖数: 54598
2
static class?
为什么用这个?
这个你不写我估计都忘了
j*****8
发帖数: 3635
3
这个不是oracle tutorial里给的例子吗
synchronized 是随instance的
这个例子里每个人hold自己的lock,然后试图获取对方的lock,所以就悲剧了

block
bowBack

【在 k****r 的大作中提到】
: 这个死锁的例子,为什么会发生呢?bow里面的bower.bowBack(this)为什么会被block
: 住呢,不是两个bow function都synchronized了吗?难道说instance的另一个bowBack
: 也被syn了吗?
: concurrency小白,勿怪。
: static class Friend {
: private final String name;
: public Friend(String name) {
: this.name = name;
: }
: public String getName() {

k****r
发帖数: 807
4
原来是这样啊,也只有这样才能发生死锁了。
所以,可以这样认为吗?因为class的定义是用了static,sync才随着instance走的吗?
如果没用static呢?

【在 j*****8 的大作中提到】
: 这个不是oracle tutorial里给的例子吗
: synchronized 是随instance的
: 这个例子里每个人hold自己的lock,然后试图获取对方的lock,所以就悲剧了
:
: block
: bowBack

j*****8
发帖数: 3635
5
和那没关系
要是synchronize static method 的话,就跟着class 走了

吗?

【在 k****r 的大作中提到】
: 原来是这样啊,也只有这样才能发生死锁了。
: 所以,可以这样认为吗?因为class的定义是用了static,sync才随着instance走的吗?
: 如果没用static呢?

k****r
发帖数: 807
6
那为什么在一个class里面,两个function分别sync呢?是只要进入一个function,其
他想用当前的instance的都会被block吗?
我之前一直以为就是当前的method会被lock。

【在 j*****8 的大作中提到】
: 和那没关系
: 要是synchronize static method 的话,就跟着class 走了
:
: 吗?

1 (共1页)
进入JobHunting版参与讨论
相关主题
有一道Java多线程的面试题能不能帮我看看?电话面试 - 是不是被阴了?
java多线程问题请教 (转载)java concurrence 例子
问个题求问一道multithreading问题
突击15天算法能搞定大公司的技术面试吗高频题:下面这lru的code 怎么改成有效率且thread-safe的版本
Java编程讨论:LinkedIn的H2O狗狗电面
菜鸟请教多线程怎么学关于java synchronized statement和static method or variable
问个thread synchronization的问题报个vmware电面攒人品
Java concurrency 面试题Amazon一道synchronization的面试题
相关话题的讨论汇总
话题: friend话题: string话题: public话题: void话题: alphonse