1. 程式人生 > >銀行有一個賬戶。有兩個儲戶分別向同一個賬戶存3000元,每次存1000,存3次。每次存完列印賬戶餘額。效果要是交替列印!

銀行有一個賬戶。有兩個儲戶分別向同一個賬戶存3000元,每次存1000,存3次。每次存完列印賬戶餘額。效果要是交替列印!

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/*銀行有一個賬戶。有兩個儲戶分別向同一個賬戶存3000元,每次存1000,存3次。每次存完列印賬戶餘額。注意:效果要是交替列印!(多執行緒實現)*/
class  cun implements Runnable{
	int sum=0;
	int a = 0;
	int b =0;
	Lock loc = new ReentrantLock();
	static boolean bool=true;
	public  void run(){
		for(int i=1;i<=6;i++){
			synchronized(this){
			notify();//先喚醒另一個執行緒
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			if(sum<6000){
			sum+=1000;
				if(Thread.currentThread().getName().equals("賬戶一")){
					a+=1000;
					System.out.println(Thread.currentThread().getName()+"目前存了"+a);
				}else{
					b+=1000;
					System.out.println(Thread.currentThread().getName()+"目前存了"+b);
				}
			
			System.out.println("目前餘額"+sum);
			try {
				wait();//列印完後等待下一次被喚醒
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			}
			}
		}
	}
	
}
public class Test {
	public static void main(String[] args) {
		cun c = new cun();
		Thread t1 = new Thread(c,"賬戶一");
		Thread t2 = new Thread(c,"賬戶二");
		t1.start();
		t2.start();
	}
}