sychronized 互斥锁 (学习笔记)

sychronized

/**
 * 互斥锁
 * sychronized  : 吹口哨同时不能吃糌粑 
 * 控制多端代码,而同步监视对象相同时这些代码之前就形成了互斥关系
 * 多个线程不能同时在这些代码之间同时运行
 * @author zhaxi
 */
public class SychronizedDemo {

	public static void main(String[] args) {
		final SychronizedDemo sd = new SychronizedDemo() ;
		Thread a = new Thread(){
				public void run(){
					sd.threadA();
				}
		} ;

		Thread b = new Thread(){
			public void run(){
				sd.threadB();
			}
		} ;
		
		a.start() ;
		b.start() ;
	}
	
	//1、当此线程被锁后 对象也被锁  
	//2、当调用b线程时候对象被锁只能等待a执行完
	public synchronized void threadA(){
		
		try {
			Thread th = Thread.currentThread() ;
			System.out.println(th.getName()+"线程a在运行..") ;
			Thread.sleep(1000);
			System.out.println(th.getName()+"线程a在执行完") ;
		} catch (Exception e) {
		}
		
	}

	public synchronized void threadB(){
		try {
			Thread th = Thread.currentThread() ;
			System.out.println(th.getName()+"线程b在运行..") ;
			Thread.sleep(1000);
			System.out.println(th.getName()+"线程b在执行完") ;
		} catch (Exception e) {
		}
	}
}

你可能感兴趣的:(java)