浏览 3939 次
锁定老帖子 主题:内部类与外部类的this
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2013-05-27
最后修改:2013-05-27
同步块1是外部类的this 同步块2是内部类的this 个人认为这两个同步块所指向的并不是同一个对象 所以也没有达到同步的目的 不知道我的理解对不对 public class TestSync { public void print(){ synchronized (this) { //同步块1 System.out.println("OutClass:" + this); } new Thread(new Worker()).start(); } class Worker implements Runnable{ @Override public void run() { synchronized (this) { //同步块2 System.out.println("InnerClass:" + this); } } } /** * @param args */ public static void main(String[] args) throws Exception{ TestSync testSync = new TestSync(); System.out.println("First"); testSync.print(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-05-28
是外部类的this
|
|
返回顶楼 | |
发表时间:2013-05-29
lvwenwen 写道 是外部类的this
??什么意思 能详细说一下吗 |
|
返回顶楼 | |
发表时间:2013-05-29
第一个this 是外部类的实例引用,里面的是当前内部类的引用,如果在内部使用外面的类this,可以这样写TestSync .this
|
|
返回顶楼 | |
发表时间:2013-05-29
kelly_zsl 写道 第一个this 是外部类的实例引用,里面的是当前内部类的引用,如果在内部使用外面的类this,可以这样写TestSync .this
是这样的 内部类要使用外部类的锁 需要 synchronize(OutClass.this) |
|
返回顶楼 | |