黑马程序员技术交流社区
标题:
同步函数和同步代码块的区别。
[打印本页]
作者:
gzbbxu
时间:
2013-6-23 12:08
标题:
同步函数和同步代码块的区别。
本帖最后由 Super_Class 于 2013-6-24 18:40 编辑
什么时候用代码块,什么时候用函数呢?
public void show() {
synchronized (ticket) {
if (ticket.getTicket() > 0) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(name + "卖了一张票,票号是" + ticket.getTicket());
ticket.setTicket(ticket.getTicket() - 1);
}
}
}
复制代码
如果以上改为同步函数就不行了,打印出-1的票。。
作者:
280270738
时间:
2013-6-23 15:55
加锁的方式不一样,同步方法的锁用的this锁,而同步代码块可以指定锁。
作者:
likairoudou
时间:
2013-6-23 21:53
java中每个对象都有同步锁,同步方法是指进入该方法时需要获取this对象的同步锁,而同步代码块则是可以指定需要获取哪个对象的同步锁,例如:
synchronized void t(){}
void t(){
synchronized(this){
}
}
同步代码块可以用如下方式来使用:
void t(){
synchronized(lockObject){}
}
其中lockObject可以为任何不为null值的对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2