package seday10;
/**
* @author xingsir
* 互斥鎖
* 當使用synchronized鎖定多個代碼片斷,而且他們指定的同步監視器對象是同一個時,那麼這些代碼片斷之間就是互斥的,
* 多個線程不能同時在這些代碼片斷中運行。
*/
public class syncDemo4 {this
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
}get
}同步
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();io
}
}
}class
}thread