线程同步问题的演示

package ch;
/**
 * 两个储户到同一个银行存钱,每个人存了三次,每次100元。
 * 1.描述银行
 * 2.描述储户行为
 * @author Administrator
 *
 */

class Bank{
	private int sum;
	private Object lock = new Object();
	
	Bank(){}
	
	public void add(int n) {
		synchronized(lock) {
			sum += n;
		    System.out.println("sum="+sum);
		}
	}
}

class Customer implements Runnable{
	private Bank b = new Bank();
	
	public void run() {
		for(int i = 0;i<3;i++) {
			b.add(100);
		}
	}
}


public class ThreadDemo {
	public static void main(String [] args) {
		Customer c = new Customer();
		
		Thread t1 = new Thread(c);
		Thread t2 = new Thread(c);
		
		t1.start();
		t2.start();
	}
}

在这里插入图片描述
添加同步的判断依据:
1.线程任务中是否有共享的数据。
2.是否多条操作共享数据的代码。
同步函数:就是在函数中加上了同步关键字修饰,同步表现形式有两种,1.同步代码块。2.同步函数。
多线程在同步中必须使用同一个所对象。

猜你喜欢

转载自blog.csdn.net/weixin_43117449/article/details/83549146