论坛首页 Java企业应用论坛

内部类与外部类的this

浏览 3939 次
精华帖 (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();
	}
}
   发表时间:2013-05-28  
是外部类的this
0 请登录后投票
   发表时间:2013-05-29  
lvwenwen 写道
是外部类的this

??什么意思 能详细说一下吗
0 请登录后投票
   发表时间:2013-05-29  
第一个this 是外部类的实例引用,里面的是当前内部类的引用,如果在内部使用外面的类this,可以这样写TestSync .this
0 请登录后投票
   发表时间:2013-05-29  
kelly_zsl 写道
第一个this 是外部类的实例引用,里面的是当前内部类的引用,如果在内部使用外面的类this,可以这样写TestSync .this


是这样的 内部类要使用外部类的锁 需要
synchronize(OutClass.this)
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics