Java保证两个方法互斥的方式,多线程同步

1、当需要保证多个方法的互斥,需要保证有一个共同的标准作为基准,这个基准就是一个锁。当2个以上的方法需要保证互斥,需要他们获取相同的锁,当一个方法拥有锁之后,其他的方法不能够获得锁,达到互斥的作用。

2、

static class Bussiness{
		public  synchronized void subB(){
			for (int j = 0; j < 1; j++) {
				System.out.println("子线程运行中");
			}
		}
		public synchronized void mainB(){
			for (int j = 0; j < 2; j++) {
				System.out.println("主线程运行中");
			}
		}
	}
上面的栗子是两个方法subB(),mainB()方法,需要互斥执行,也就是说当执行subB()方法的同时不能去执行mainB(),反之亦然。那他怎么保证互斥的呢,关键字synchronized,当方法被声明为synchronized时,表示锁对象为,调用者。final Bussiness bussiness = new Bussiness(); 也就是bussness,如果同一个对象,当这个bussiness对象被锁后,自然另外一个方法也就不能够执行。方法被声明为synchronized 也等同于sychronized(this)===>this指代的也是调用者bussiness对象。





你可能感兴趣的:(java开发)