方法声明时使用放在访问操作符(public等)之后,返回类型声明(void等)之前 一次只能有一个线程进入该方法,其他线程要想在此时调用该方法,只能排队等候 当前线程执行完该方法后,别的线程才能进入public synchronized void synMethod() 代码块中使用synchronized后跟括号,
括号里是变量 public int synMethod(int a1) { synchronized(a1) { //一次只能有一个线程进入 } }synchronized后面括号是一对象线程获得的是对象锁如果为了对对象使用部分锁通常是虚拟对象来上锁(创建一个简单对象)public void run() { synchronized ( Ojbect instance ) {synchronized后面括号里是类名线程获得的是类对象锁线程对该类的静态方法和静态变量的等都不能操作 Public class TestThread { public void testSynch() { …….. synchronized( TestThread.class ) { ………. } } }
括号里是变量 public int synMethod(int a1) { synchronized(a1) { //一次只能有一个线程进入 } }synchronized后面括号是一对象线程获得的是对象锁如果为了对对象使用部分锁通常是虚拟对象来上锁(创建一个简单对象)public void run() { synchronized ( Ojbect instance ) {synchronized后面括号里是类名线程获得的是类对象锁线程对该类的静态方法和静态变量的等都不能操作 Public class TestThread { public void testSynch() { …….. synchronized( TestThread.class ) { ………. } } }