用SYNCHRONIZED实现互斥锁

倖福魔咒の 提交于 2020-02-19 16:23:15

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获取

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!