用synchronized實現互斥鎖

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

相關文章
相關標籤/搜索