銀行有一個賬戶。有兩個儲戶分別向同一個賬戶存3000元,每次存1000,存3次。每次存完列印賬戶餘額。效果要是交替列印!
阿新 • • 發佈:2019-01-25
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(); } }