package seday10;

/**

* @author xingsir

* 互斥锁

* 当使用synchronized锁定多个代码片段,并且他们指定的同步监视器对象是同一个时,那么这些代码片段之间就是互斥的,

* 多个线程不能同时在这些代码片段中运行。

*/

public class syncDemo4 {


public static void main(String[] args) {

Boo boo = new Boo();//实例化

Thread t1 = new Thread() {//线程一

public void run() {

boo.mA();//调用方法

}

};

Thread t2 = new Thread() {//线程二

public void run() {

boo.mB();//调用方法

}

};

t1.start();//启动

t2.start();//启动


}


}

class Boo{

public synchronized void mA() {//synchronized锁定多个代码片段

try {

Thread thread =Thread.currentThread();//主线程

System.out.println(thread.getName()+":mA方法正在执行...");//打印

Thread.sleep(5000);//休眠5000毫秒

System.out.println(thread.getName()+":mA方法执行完毕");//打印

} catch (Exception e) {

// TODO: handle exception

}


}


public void mB() {

synchronized(this) {//synchronized锁定多个代码片段

try {

Thread thread=Thread.currentThread();//主线程

System.out.println(thread.getName()+":正在执行mB方法...");//打印

Thread.sleep(5000);//休眠5000毫秒

System.out.println(thread.getName()+":执行mB方法完毕!");//打印

} catch (Exception e) {

e.printStackTrace();


}

}

}


}

更多技术资讯可关注:itheimaGZ获取