黑马程序员技术交流社区
标题:
关于同步函数的锁的问题
[打印本页]
作者:
刘俊佳
时间:
2012-8-10 09:50
标题:
关于同步函数的锁的问题
为什么同步函数的锁是this?能够深入解释一下吗?最好是举例详细说明
作者:
张扬123
时间:
2012-8-10 10:15
函数需要被对象调用,那么函数都有一个所属对象引用,就是this,所以同步函数使用的锁是this。
用一下代码验证可得结果:
class Ticket implements Runnable
{
private int ticket = 100;
Object obj = new Object();
boolean flag = true;
public void run()
{
while(true)
{
show();
}
}
public synchronized void show()
{
if(ticket>0)
{
try
{
Thread.sleep(10);
}
catch (Exception e)
{
}
System.out.println((Thread.currentThread()==this)+"同步函数卖票"+ticket--);
}
}
}
class ThisLockDemo
{
public static void main(String[] args)
{
Ticket t = new Ticket();
Thread t1 = new Thread(t);
t1.start();
}
}
复制代码
打印结果是“true同步函数售票ticket--”
这个在毕老师的视频里面有讲到过的。自己多练习两边就明白了。
作者:
刘俊佳
时间:
2012-8-14 08:51
问题已解决 谢谢了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2