Java——互斥锁

package day04;
/**
 * 互斥锁
 * 当使用synchroinzed锁住多段不同的代码片段,
 * 但是这些同步块使用的同步监视器对象是同一个时,那么这些代码
 * 片段之间就是互斥的。多个线程不能同时执行他们。
 * @author Administrator
 *
 */
public class SyncDemo4 {
	public static void main(String[] args) {
		final Boo boo = new Boo();
		Thread t1 = new Thread() {
			public void run() {
				boo.methodA();
			}
		};
		Thread t2 = new Thread() {
			public void run() {
				boo.methodB();
			}
		};
		t1.start();
		t2.start();
	}
}
package day04;

public class Boo {

	public synchronized void methodA() {
		Thread t = Thread.currentThread();
		try {
			Thread.sleep(5000);
		}catch(InterruptedException e){
			e.printStackTrace();
		}
		
		System.out.println(t.getName()+":运行A方法完毕!");
	}

	public void methodB() {
		synchronized(this) {
			Thread t = Thread.currentThread();
			System.out.println(t.getName()+":正在运行方法B...");
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			System.out.println(t.getName()+":运行B方法完毕!");
		}
		
	}

}

Java——互斥锁_第1张图片

你可能感兴趣的:(java)