[size=1em]1
[size=1em]2
[size=1em]3
[size=1em]4
[size=1em]5
[size=1em]6
[size=1em]7
[size=1em]8
[size=1em]9
[size=1em]10
[size=1em]11
[size=1em]12
[size=1em]13
[size=1em]14
[size=1em]15
[size=1em]16
[size=1em]17
[size=1em]18
[size=1em]19
[size=1em]20
[size=1em]21
[size=1em]22
[size=1em]23
[size=1em]24
[size=1em]25
[size=1em]26
[size=1em]27
[size=1em]28
[size=1em]29
[size=1em]30
[size=1em]31
[size=1em]32
[size=1em]33
[size=1em]34
[size=1em]35
[size=1em]36
[size=1em]37
[size=1em]38
[size=1em]39
[size=1em]40
[size=1em]41
[size=1em]42
[size=1em]43
[size=1em]44
[size=1em]45
[size=1em]46
[size=1em]47
[size=1em]48
[size=1em]49
[size=1em]50
[size=1em]51
[size=1em]52
[size=1em]53
[size=1em]54
[size=1em]55
[size=1em]56
[size=1em]57
[size=1em]58
[size=1em]59
[size=1em]60
[size=1em]61
[size=1em]62
[size=1em]63
[size=1em]64
| [size=1em][size=1em]package thread;
[size=1em]/**
[size=1em] * 多线程模拟一个存 一个取,存完通知另一个来取
[size=1em] */
[size=1em]public class ImitateDepositDrawTheadTest {
[size=1em]
[size=1em] public static void main(String[] args) {
[size=1em]
[size=1em] final DepositOrWithdrawBusiness business = new DepositOrWithdrawBusiness(1000);
[size=1em] new Thread(new Runnable(){
[size=1em] @Override
[size=1em] public void run() {
[size=1em] while(true){
[size=1em] business.deposit();
[size=1em] }
[size=1em] }
[size=1em] }).start();
[size=1em] new Thread(new Runnable(){
[size=1em] @Override
[size=1em] public void run() {
[size=1em] while(true){
[size=1em] business.withdraw();
[size=1em] }
[size=1em] }
[size=1em] }).start();
[size=1em]
[size=1em]
[size=1em] }
[size=1em]}
[size=1em]class DepositOrWithdrawBusiness{
[size=1em] int balance = 1000;
[size=1em] public DepositOrWithdrawBusiness(int balance){
[size=1em] this.balance = balance;
[size=1em] }
[size=1em] boolean isWithdraw = false;
[size=1em] public synchronized void deposit(){
[size=1em] if(isWithdraw){
[size=1em] try {
[size=1em] this.wait();
[size=1em] } catch (InterruptedException e) {
[size=1em] e.printStackTrace();
[size=1em] }
[size=1em] }
[size=1em] balance = balance+300;
[size=1em] System.out.println(Thread.currentThread().getName()+ " deposit $300,now balance:" + balance);
[size=1em] isWithdraw=true;
[size=1em] this.notify();
[size=1em]
[size=1em] }
[size=1em] public synchronized void withdraw(){
[size=1em] if(!isWithdraw){
[size=1em] try {
[size=1em] this.wait();
[size=1em] } catch (InterruptedException e) {
[size=1em] e.printStackTrace();
[size=1em] }
[size=1em] }
[size=1em] balance = balance-300;
[size=1em] System.out.println(Thread.currentThread().getName()+ " withdraw $300,now balance:" + balance);
[size=1em] isWithdraw=false;
[size=1em] this.notify();
[size=1em] }
[size=1em]}
|