A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© che201311 中级黑马   /  2013-11-22 23:40  /  1376 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

synchronized(this)是对当前实例对象加锁么,主要是区分不清synchronized(this)和public synchronized void 方法名(){}两种用法的不同,如果有线程是wait状态,在这两种情况下调用notify 唤醒的是哪些线程。。。 也许我表达的不清楚,初学菜鸟,求指导啊。。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 新同学鼓励分+1、多提问。快上进!.

查看全部评分

4 个回复

倒序浏览
synchronized(this)并不是给当前对象加锁,而是指当一个线程进入同步代码块的时候,其他线程就无法进入该同步代码块,形象的说法就是如同一个人进了厕所之后锁了厕所门,以防止其他人进入厕所。
用synchronized(this)还是public synchronized void 方法名(){}就看你需要同步的代码的情况了,如果某个方法中的代码都需要同步,则用后一种方法,如果某个方法中只有部分代码需要同步,那么用同步代码块,即前一种方式就行。
另外:同步代码块的锁可以是任意的对象,非静态同步函数的锁是this,静态同步函数的锁是字节码文件对象,即 类名.class。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
你的最后一问,我没怎么理解。抱歉
回复 使用道具 举报
解决了 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马