黑马程序员技术交流社区

标题: Thread 1调用setI(),Thread 2调用getI(),会不会相互block? [打印本页]

作者: 黑马伍仪华    时间: 2012-3-5 08:58
标题: Thread 1调用setI(),Thread 2调用getI(),会不会相互block?

public class testSync {
private int i;
public synchronized void setI(int i) {
  this.i = i;
}
public int getI() {
  return i;
}
}

若getI的实现改为如下,会不会相互block?

private static final Object o = new Object();
public int getI() {
synchronized(o) {
  return i;
}
}

作者: dangfei    时间: 2012-3-5 09:16
lz所说的相互block是指谁跟谁相互,setI(int i)跟getI() 吗,这两个方法都有自己的锁,各自实现自己的线程同步。不明白相互block是指什么啊,lz再说清楚些。
作者: 刘泰    时间: 2012-3-5 12:34
加锁以后就不会出现了,如果不加锁,在一个等待释放资源,一个请求资源,并且相互制约的情况下,就会出现死锁现象,不加锁的话就要多注意一下,加锁的话,当执行完这个线程之后才会执行下一个,即每次只能有一个线程调用,就不会出现死锁的现象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2