java多线程(四)
一个例子:
Account.java 客户实体类
package com.asiainfo.test.thread8;
/**
* 账户类
* @author luke
*
*/
public class Account {
private String accNo;//账户编号
private double balance;//账户余额
private boolean flag = false;// 标识账户中是否已有存款 //构造方法,同时设账户编号和账户余额
public Account (String accountNo,double balance) {
this.accNo = accountNo;
this.balance = balance;
} public String getAccNo() {
return accNo;
}
public void setAccNo(String accNo) {
this.accNo = accNo;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
} /**
* 存钱
* @param depositAmout
* @param i
*/
public synchronized void deposit(double depositAmout,int i){
if(flag){
try {
System.out.println(Thread.currentThread().getName() + "开始执行wati操作" + " 执行了wait操作" + "-- i =" + i);
wait();
System.out.println(Thread.currentThread().getName() + "执行了wait操作" + " 执行了wait操作" + "-- i =" + i);
} catch (InterruptedException e) {
e.printStackTrace();
}
} else {
System.out.println(Thread.currentThread().getName() + " 存款:" + depositAmout + " -- i=" + i);
this.setBalance(balance + depositAmout);
flag = true;
//唤醒其他线程
notifyAll();
System.out.println(Thread.currentThread().getName() + "-- 存钱 -- 执行完毕" + " -- i=" + i);
}
} /**
* 取钱
* @param drawAmount
* @param i
*/
public synchronized void draw(double drawAmount,int i){
if(!flag){
try {
System.out.println(Thread.currentThread().getName() + " 开始要执行wait操作" + " 执行了wait操作" + " -- i=" + i);
wait();
System.out.println(Thread.currentThread().getName() + " 执行了wait操作" + " 执行了wait操作" + " -- i=" + i);
} catch (InterruptedException e) {
e.printStackTrace();
} } else {
System.out.println(Thread.currentThread().getName() + " 取钱:" + drawAmount + " -- i=" + i);
this.setBalance(balance - drawAmount);
flag = false;
//唤醒其他线程
notifyAll();
System.out.println(Thread.currentThread().getName() + "-- 取钱 -- 执行完毕" + " -- i=" + i); //
} } }
DepositeMoneyThread.java 存钱线程
package com.asiainfo.test.thread8; /**
* 存款线程
* @author hasee
*
*/
public class DepositeMoneyThread extends Thread {
private Account account;
private double amount; public DepositeMoneyThread(String threadName, Account account, double amount) {
super(threadName);
this.account = account;
this.amount = amount;
}
public void run() {
for (int i = 0; i < 100; i++) {
account.deposit(amount, i);
}
System.out.println(account.getBalance());
}
}
DrawMoneyThread.java 取钱线程
package com.asiainfo.test.thread8; /**
* 取现线程
* @author luke
*
*/
public class DrawMoneyThread extends Thread {
private Account account;
private double amount; public DrawMoneyThread(String threadName, Account account, double amount) {
super(threadName);
this.account = account;
this.amount = amount;
} public void run() {
for (int i = 0; i < 100; i++) {
if(account.getBalance()>= amount){
account.draw(amount, i);
}
}
} }
ThreadTest.java 测试类
package com.asiainfo.test.thread8; /**
* 测试类
* @author luke
*
*/
public class ThreadTest {
public static void main(String[] args) {
Account account = new Account("001",1000); Thread thread1 = new DrawMoneyThread("取钱线程",account,700);
Thread thread2 = new DepositeMoneyThread("存钱线程",account,700);
thread1.start();
thread2.start(); }
}
测试结果:
取钱线程 开始要执行wait操作 执行了wait操作 -- i=0
存钱线程 存款:700.0 -- i=0
存钱线程-- 存钱 -- 执行完毕 -- i=0
存钱线程开始执行wati操作 执行了wait操作-- i =1
取钱线程 执行了wait操作 执行了wait操作 -- i=0
取钱线程 取钱:700.0 -- i=1
取钱线程-- 取钱 -- 执行完毕 -- i=1
取钱线程 开始要执行wait操作 执行了wait操作 -- i=2
存钱线程执行了wait操作 执行了wait操作-- i =1
存钱线程 存款:700.0 -- i=2
存钱线程-- 存钱 -- 执行完毕 -- i=2
存钱线程开始执行wati操作 执行了wait操作-- i =3
取钱线程 执行了wait操作 执行了wait操作 -- i=2
取钱线程 取钱:700.0 -- i=3
取钱线程-- 取钱 -- 执行完毕 -- i=3
取钱线程 开始要执行wait操作 执行了wait操作 -- i=4
存钱线程执行了wait操作 执行了wait操作-- i =3
存钱线程 存款:700.0 -- i=4
存钱线程-- 存钱 -- 执行完毕 -- i=4
存钱线程开始执行wati操作 执行了wait操作-- i =5
取钱线程 执行了wait操作 执行了wait操作 -- i=4
取钱线程 取钱:700.0 -- i=5
取钱线程-- 取钱 -- 执行完毕 -- i=5
取钱线程 开始要执行wait操作 执行了wait操作 -- i=6
存钱线程执行了wait操作 执行了wait操作-- i =5
存钱线程 存款:700.0 -- i=6
存钱线程-- 存钱 -- 执行完毕 -- i=6
存钱线程开始执行wati操作 执行了wait操作-- i =7
取钱线程 执行了wait操作 执行了wait操作 -- i=6
取钱线程 取钱:700.0 -- i=7
取钱线程-- 取钱 -- 执行完毕 -- i=7
取钱线程 开始要执行wait操作 执行了wait操作 -- i=8
存钱线程执行了wait操作 执行了wait操作-- i =7
存钱线程 存款:700.0 -- i=8
存钱线程-- 存钱 -- 执行完毕 -- i=8
存钱线程开始执行wati操作 执行了wait操作-- i =9
取钱线程 执行了wait操作 执行了wait操作 -- i=8
取钱线程 取钱:700.0 -- i=9
取钱线程-- 取钱 -- 执行完毕 -- i=9
取钱线程 开始要执行wait操作 执行了wait操作 -- i=10
存钱线程执行了wait操作 执行了wait操作-- i =9
存钱线程 存款:700.0 -- i=10
存钱线程-- 存钱 -- 执行完毕 -- i=10
存钱线程开始执行wati操作 执行了wait操作-- i =11
取钱线程 执行了wait操作 执行了wait操作 -- i=10
取钱线程 取钱:700.0 -- i=11
取钱线程-- 取钱 -- 执行完毕 -- i=11
取钱线程 开始要执行wait操作 执行了wait操作 -- i=12
存钱线程执行了wait操作 执行了wait操作-- i =11
存钱线程 存款:700.0 -- i=12
存钱线程-- 存钱 -- 执行完毕 -- i=12
存钱线程开始执行wati操作 执行了wait操作-- i =13
取钱线程 执行了wait操作 执行了wait操作 -- i=12
取钱线程 取钱:700.0 -- i=13
取钱线程-- 取钱 -- 执行完毕 -- i=13
取钱线程 开始要执行wait操作 执行了wait操作 -- i=14
存钱线程执行了wait操作 执行了wait操作-- i =13
存钱线程 存款:700.0 -- i=14
存钱线程-- 存钱 -- 执行完毕 -- i=14
存钱线程开始执行wati操作 执行了wait操作-- i =15
取钱线程 执行了wait操作 执行了wait操作 -- i=14
取钱线程 取钱:700.0 -- i=15
取钱线程-- 取钱 -- 执行完毕 -- i=15
取钱线程 开始要执行wait操作 执行了wait操作 -- i=16
存钱线程执行了wait操作 执行了wait操作-- i =15
存钱线程 存款:700.0 -- i=16
存钱线程-- 存钱 -- 执行完毕 -- i=16
存钱线程开始执行wati操作 执行了wait操作-- i =17
取钱线程 执行了wait操作 执行了wait操作 -- i=16
取钱线程 取钱:700.0 -- i=17
取钱线程-- 取钱 -- 执行完毕 -- i=17
取钱线程 开始要执行wait操作 执行了wait操作 -- i=18
存钱线程执行了wait操作 执行了wait操作-- i =17
存钱线程 存款:700.0 -- i=18
存钱线程-- 存钱 -- 执行完毕 -- i=18
存钱线程开始执行wati操作 执行了wait操作-- i =19
取钱线程 执行了wait操作 执行了wait操作 -- i=18
取钱线程 取钱:700.0 -- i=19
取钱线程-- 取钱 -- 执行完毕 -- i=19
取钱线程 开始要执行wait操作 执行了wait操作 -- i=20
存钱线程执行了wait操作 执行了wait操作-- i =19
存钱线程 存款:700.0 -- i=20
存钱线程-- 存钱 -- 执行完毕 -- i=20
存钱线程开始执行wati操作 执行了wait操作-- i =21
取钱线程 执行了wait操作 执行了wait操作 -- i=20
取钱线程 取钱:700.0 -- i=21
取钱线程-- 取钱 -- 执行完毕 -- i=21
取钱线程 开始要执行wait操作 执行了wait操作 -- i=22
存钱线程执行了wait操作 执行了wait操作-- i =21
存钱线程 存款:700.0 -- i=22
存钱线程-- 存钱 -- 执行完毕 -- i=22
存钱线程开始执行wati操作 执行了wait操作-- i =23
取钱线程 执行了wait操作 执行了wait操作 -- i=22
取钱线程 取钱:700.0 -- i=23
取钱线程-- 取钱 -- 执行完毕 -- i=23
取钱线程 开始要执行wait操作 执行了wait操作 -- i=24
存钱线程执行了wait操作 执行了wait操作-- i =23
存钱线程 存款:700.0 -- i=24
存钱线程-- 存钱 -- 执行完毕 -- i=24
存钱线程开始执行wati操作 执行了wait操作-- i =25
取钱线程 执行了wait操作 执行了wait操作 -- i=24
取钱线程 取钱:700.0 -- i=25
取钱线程-- 取钱 -- 执行完毕 -- i=25
取钱线程 开始要执行wait操作 执行了wait操作 -- i=26
存钱线程执行了wait操作 执行了wait操作-- i =25
存钱线程 存款:700.0 -- i=26
存钱线程-- 存钱 -- 执行完毕 -- i=26
存钱线程开始执行wati操作 执行了wait操作-- i =27
取钱线程 执行了wait操作 执行了wait操作 -- i=26
取钱线程 取钱:700.0 -- i=27
取钱线程-- 取钱 -- 执行完毕 -- i=27
取钱线程 开始要执行wait操作 执行了wait操作 -- i=28
存钱线程执行了wait操作 执行了wait操作-- i =27
存钱线程 存款:700.0 -- i=28
存钱线程-- 存钱 -- 执行完毕 -- i=28
存钱线程开始执行wati操作 执行了wait操作-- i =29
取钱线程 执行了wait操作 执行了wait操作 -- i=28
取钱线程 取钱:700.0 -- i=29
取钱线程-- 取钱 -- 执行完毕 -- i=29
取钱线程 开始要执行wait操作 执行了wait操作 -- i=30
存钱线程执行了wait操作 执行了wait操作-- i =29
存钱线程 存款:700.0 -- i=30
存钱线程-- 存钱 -- 执行完毕 -- i=30
存钱线程开始执行wati操作 执行了wait操作-- i =31
取钱线程 执行了wait操作 执行了wait操作 -- i=30
取钱线程 取钱:700.0 -- i=31
取钱线程-- 取钱 -- 执行完毕 -- i=31
取钱线程 开始要执行wait操作 执行了wait操作 -- i=32
存钱线程执行了wait操作 执行了wait操作-- i =31
存钱线程 存款:700.0 -- i=32
存钱线程-- 存钱 -- 执行完毕 -- i=32
存钱线程开始执行wati操作 执行了wait操作-- i =33
取钱线程 执行了wait操作 执行了wait操作 -- i=32
取钱线程 取钱:700.0 -- i=33
取钱线程-- 取钱 -- 执行完毕 -- i=33
取钱线程 开始要执行wait操作 执行了wait操作 -- i=34
存钱线程执行了wait操作 执行了wait操作-- i =33
存钱线程 存款:700.0 -- i=34
存钱线程-- 存钱 -- 执行完毕 -- i=34
存钱线程开始执行wati操作 执行了wait操作-- i =35
取钱线程 执行了wait操作 执行了wait操作 -- i=34
取钱线程 取钱:700.0 -- i=35
取钱线程-- 取钱 -- 执行完毕 -- i=35
取钱线程 开始要执行wait操作 执行了wait操作 -- i=36
存钱线程执行了wait操作 执行了wait操作-- i =35
存钱线程 存款:700.0 -- i=36
存钱线程-- 存钱 -- 执行完毕 -- i=36
存钱线程开始执行wati操作 执行了wait操作-- i =37
取钱线程 执行了wait操作 执行了wait操作 -- i=36
取钱线程 取钱:700.0 -- i=37
取钱线程-- 取钱 -- 执行完毕 -- i=37
取钱线程 开始要执行wait操作 执行了wait操作 -- i=38
存钱线程执行了wait操作 执行了wait操作-- i =37
存钱线程 存款:700.0 -- i=38
存钱线程-- 存钱 -- 执行完毕 -- i=38
存钱线程开始执行wati操作 执行了wait操作-- i =39
取钱线程 执行了wait操作 执行了wait操作 -- i=38
取钱线程 取钱:700.0 -- i=39
取钱线程-- 取钱 -- 执行完毕 -- i=39
取钱线程 开始要执行wait操作 执行了wait操作 -- i=40
存钱线程执行了wait操作 执行了wait操作-- i =39
存钱线程 存款:700.0 -- i=40
存钱线程-- 存钱 -- 执行完毕 -- i=40
存钱线程开始执行wati操作 执行了wait操作-- i =41
取钱线程 执行了wait操作 执行了wait操作 -- i=40
取钱线程 取钱:700.0 -- i=41
取钱线程-- 取钱 -- 执行完毕 -- i=41
取钱线程 开始要执行wait操作 执行了wait操作 -- i=42
存钱线程执行了wait操作 执行了wait操作-- i =41
存钱线程 存款:700.0 -- i=42
存钱线程-- 存钱 -- 执行完毕 -- i=42
存钱线程开始执行wati操作 执行了wait操作-- i =43
取钱线程 执行了wait操作 执行了wait操作 -- i=42
取钱线程 取钱:700.0 -- i=43
取钱线程-- 取钱 -- 执行完毕 -- i=43
取钱线程 开始要执行wait操作 执行了wait操作 -- i=44
存钱线程执行了wait操作 执行了wait操作-- i =43
存钱线程 存款:700.0 -- i=44
存钱线程-- 存钱 -- 执行完毕 -- i=44
存钱线程开始执行wati操作 执行了wait操作-- i =45
取钱线程 执行了wait操作 执行了wait操作 -- i=44
取钱线程 取钱:700.0 -- i=45
取钱线程-- 取钱 -- 执行完毕 -- i=45
取钱线程 开始要执行wait操作 执行了wait操作 -- i=46
存钱线程执行了wait操作 执行了wait操作-- i =45
存钱线程 存款:700.0 -- i=46
存钱线程-- 存钱 -- 执行完毕 -- i=46
存钱线程开始执行wati操作 执行了wait操作-- i =47
取钱线程 执行了wait操作 执行了wait操作 -- i=46
取钱线程 取钱:700.0 -- i=47
取钱线程-- 取钱 -- 执行完毕 -- i=47
取钱线程 开始要执行wait操作 执行了wait操作 -- i=48
存钱线程执行了wait操作 执行了wait操作-- i =47
存钱线程 存款:700.0 -- i=48
存钱线程-- 存钱 -- 执行完毕 -- i=48
存钱线程开始执行wati操作 执行了wait操作-- i =49
取钱线程 执行了wait操作 执行了wait操作 -- i=48
取钱线程 取钱:700.0 -- i=49
取钱线程-- 取钱 -- 执行完毕 -- i=49
取钱线程 开始要执行wait操作 执行了wait操作 -- i=50
存钱线程执行了wait操作 执行了wait操作-- i =49
存钱线程 存款:700.0 -- i=50
存钱线程-- 存钱 -- 执行完毕 -- i=50
存钱线程开始执行wati操作 执行了wait操作-- i =51
取钱线程 执行了wait操作 执行了wait操作 -- i=50
取钱线程 取钱:700.0 -- i=51
取钱线程-- 取钱 -- 执行完毕 -- i=51
取钱线程 开始要执行wait操作 执行了wait操作 -- i=52
存钱线程执行了wait操作 执行了wait操作-- i =51
存钱线程 存款:700.0 -- i=52
存钱线程-- 存钱 -- 执行完毕 -- i=52
存钱线程开始执行wati操作 执行了wait操作-- i =53
取钱线程 执行了wait操作 执行了wait操作 -- i=52
取钱线程 取钱:700.0 -- i=53
取钱线程-- 取钱 -- 执行完毕 -- i=53
取钱线程 开始要执行wait操作 执行了wait操作 -- i=54
存钱线程执行了wait操作 执行了wait操作-- i =53
存钱线程 存款:700.0 -- i=54
存钱线程-- 存钱 -- 执行完毕 -- i=54
存钱线程开始执行wati操作 执行了wait操作-- i =55
取钱线程 执行了wait操作 执行了wait操作 -- i=54
取钱线程 取钱:700.0 -- i=55
取钱线程-- 取钱 -- 执行完毕 -- i=55
取钱线程 开始要执行wait操作 执行了wait操作 -- i=56
存钱线程执行了wait操作 执行了wait操作-- i =55
存钱线程 存款:700.0 -- i=56
存钱线程-- 存钱 -- 执行完毕 -- i=56
存钱线程开始执行wati操作 执行了wait操作-- i =57
取钱线程 执行了wait操作 执行了wait操作 -- i=56
取钱线程 取钱:700.0 -- i=57
取钱线程-- 取钱 -- 执行完毕 -- i=57
取钱线程 开始要执行wait操作 执行了wait操作 -- i=58
存钱线程执行了wait操作 执行了wait操作-- i =57
存钱线程 存款:700.0 -- i=58
存钱线程-- 存钱 -- 执行完毕 -- i=58
存钱线程开始执行wati操作 执行了wait操作-- i =59
取钱线程 执行了wait操作 执行了wait操作 -- i=58
取钱线程 取钱:700.0 -- i=59
取钱线程-- 取钱 -- 执行完毕 -- i=59
取钱线程 开始要执行wait操作 执行了wait操作 -- i=60
存钱线程执行了wait操作 执行了wait操作-- i =59
存钱线程 存款:700.0 -- i=60
存钱线程-- 存钱 -- 执行完毕 -- i=60
存钱线程开始执行wati操作 执行了wait操作-- i =61
取钱线程 执行了wait操作 执行了wait操作 -- i=60
取钱线程 取钱:700.0 -- i=61
取钱线程-- 取钱 -- 执行完毕 -- i=61
取钱线程 开始要执行wait操作 执行了wait操作 -- i=62
存钱线程执行了wait操作 执行了wait操作-- i =61
存钱线程 存款:700.0 -- i=62
存钱线程-- 存钱 -- 执行完毕 -- i=62
存钱线程开始执行wati操作 执行了wait操作-- i =63
取钱线程 执行了wait操作 执行了wait操作 -- i=62
取钱线程 取钱:700.0 -- i=63
取钱线程-- 取钱 -- 执行完毕 -- i=63
取钱线程 开始要执行wait操作 执行了wait操作 -- i=64
存钱线程执行了wait操作 执行了wait操作-- i =63
存钱线程 存款:700.0 -- i=64
存钱线程-- 存钱 -- 执行完毕 -- i=64
存钱线程开始执行wati操作 执行了wait操作-- i =65
取钱线程 执行了wait操作 执行了wait操作 -- i=64
取钱线程 取钱:700.0 -- i=65
取钱线程-- 取钱 -- 执行完毕 -- i=65
取钱线程 开始要执行wait操作 执行了wait操作 -- i=66
存钱线程执行了wait操作 执行了wait操作-- i =65
存钱线程 存款:700.0 -- i=66
存钱线程-- 存钱 -- 执行完毕 -- i=66
存钱线程开始执行wati操作 执行了wait操作-- i =67
取钱线程 执行了wait操作 执行了wait操作 -- i=66
取钱线程 取钱:700.0 -- i=67
取钱线程-- 取钱 -- 执行完毕 -- i=67
取钱线程 开始要执行wait操作 执行了wait操作 -- i=68
存钱线程执行了wait操作 执行了wait操作-- i =67
存钱线程 存款:700.0 -- i=68
存钱线程-- 存钱 -- 执行完毕 -- i=68
存钱线程开始执行wati操作 执行了wait操作-- i =69
取钱线程 执行了wait操作 执行了wait操作 -- i=68
取钱线程 取钱:700.0 -- i=69
取钱线程-- 取钱 -- 执行完毕 -- i=69
取钱线程 开始要执行wait操作 执行了wait操作 -- i=70
存钱线程执行了wait操作 执行了wait操作-- i =69
存钱线程 存款:700.0 -- i=70
存钱线程-- 存钱 -- 执行完毕 -- i=70
存钱线程开始执行wati操作 执行了wait操作-- i =71
取钱线程 执行了wait操作 执行了wait操作 -- i=70
取钱线程 取钱:700.0 -- i=71
取钱线程-- 取钱 -- 执行完毕 -- i=71
取钱线程 开始要执行wait操作 执行了wait操作 -- i=72
存钱线程执行了wait操作 执行了wait操作-- i =71
存钱线程 存款:700.0 -- i=72
存钱线程-- 存钱 -- 执行完毕 -- i=72
存钱线程开始执行wati操作 执行了wait操作-- i =73
取钱线程 执行了wait操作 执行了wait操作 -- i=72
取钱线程 取钱:700.0 -- i=73
取钱线程-- 取钱 -- 执行完毕 -- i=73
取钱线程 开始要执行wait操作 执行了wait操作 -- i=74
存钱线程执行了wait操作 执行了wait操作-- i =73
存钱线程 存款:700.0 -- i=74
存钱线程-- 存钱 -- 执行完毕 -- i=74
存钱线程开始执行wati操作 执行了wait操作-- i =75
取钱线程 执行了wait操作 执行了wait操作 -- i=74
取钱线程 取钱:700.0 -- i=75
取钱线程-- 取钱 -- 执行完毕 -- i=75
取钱线程 开始要执行wait操作 执行了wait操作 -- i=76
存钱线程执行了wait操作 执行了wait操作-- i =75
存钱线程 存款:700.0 -- i=76
存钱线程-- 存钱 -- 执行完毕 -- i=76
存钱线程开始执行wati操作 执行了wait操作-- i =77
取钱线程 执行了wait操作 执行了wait操作 -- i=76
取钱线程 取钱:700.0 -- i=77
取钱线程-- 取钱 -- 执行完毕 -- i=77
取钱线程 开始要执行wait操作 执行了wait操作 -- i=78
存钱线程执行了wait操作 执行了wait操作-- i =77
存钱线程 存款:700.0 -- i=78
存钱线程-- 存钱 -- 执行完毕 -- i=78
存钱线程开始执行wati操作 执行了wait操作-- i =79
取钱线程 执行了wait操作 执行了wait操作 -- i=78
取钱线程 取钱:700.0 -- i=79
取钱线程-- 取钱 -- 执行完毕 -- i=79
取钱线程 开始要执行wait操作 执行了wait操作 -- i=80
存钱线程执行了wait操作 执行了wait操作-- i =79
存钱线程 存款:700.0 -- i=80
存钱线程-- 存钱 -- 执行完毕 -- i=80
存钱线程开始执行wati操作 执行了wait操作-- i =81
取钱线程 执行了wait操作 执行了wait操作 -- i=80
取钱线程 取钱:700.0 -- i=81
取钱线程-- 取钱 -- 执行完毕 -- i=81
取钱线程 开始要执行wait操作 执行了wait操作 -- i=82
存钱线程执行了wait操作 执行了wait操作-- i =81
存钱线程 存款:700.0 -- i=82
存钱线程-- 存钱 -- 执行完毕 -- i=82
存钱线程开始执行wati操作 执行了wait操作-- i =83
取钱线程 执行了wait操作 执行了wait操作 -- i=82
取钱线程 取钱:700.0 -- i=83
取钱线程-- 取钱 -- 执行完毕 -- i=83
取钱线程 开始要执行wait操作 执行了wait操作 -- i=84
存钱线程执行了wait操作 执行了wait操作-- i =83
存钱线程 存款:700.0 -- i=84
存钱线程-- 存钱 -- 执行完毕 -- i=84
存钱线程开始执行wati操作 执行了wait操作-- i =85
取钱线程 执行了wait操作 执行了wait操作 -- i=84
取钱线程 取钱:700.0 -- i=85
取钱线程-- 取钱 -- 执行完毕 -- i=85
取钱线程 开始要执行wait操作 执行了wait操作 -- i=86
存钱线程执行了wait操作 执行了wait操作-- i =85
存钱线程 存款:700.0 -- i=86
存钱线程-- 存钱 -- 执行完毕 -- i=86
存钱线程开始执行wati操作 执行了wait操作-- i =87
取钱线程 执行了wait操作 执行了wait操作 -- i=86
取钱线程 取钱:700.0 -- i=87
取钱线程-- 取钱 -- 执行完毕 -- i=87
取钱线程 开始要执行wait操作 执行了wait操作 -- i=88
存钱线程执行了wait操作 执行了wait操作-- i =87
存钱线程 存款:700.0 -- i=88
存钱线程-- 存钱 -- 执行完毕 -- i=88
存钱线程开始执行wati操作 执行了wait操作-- i =89
取钱线程 执行了wait操作 执行了wait操作 -- i=88
取钱线程 取钱:700.0 -- i=89
取钱线程-- 取钱 -- 执行完毕 -- i=89
取钱线程 开始要执行wait操作 执行了wait操作 -- i=90
存钱线程执行了wait操作 执行了wait操作-- i =89
存钱线程 存款:700.0 -- i=90
存钱线程-- 存钱 -- 执行完毕 -- i=90
存钱线程开始执行wati操作 执行了wait操作-- i =91
取钱线程 执行了wait操作 执行了wait操作 -- i=90
取钱线程 取钱:700.0 -- i=91
取钱线程-- 取钱 -- 执行完毕 -- i=91
取钱线程 开始要执行wait操作 执行了wait操作 -- i=92
存钱线程执行了wait操作 执行了wait操作-- i =91
存钱线程 存款:700.0 -- i=92
存钱线程-- 存钱 -- 执行完毕 -- i=92
存钱线程开始执行wati操作 执行了wait操作-- i =93
取钱线程 执行了wait操作 执行了wait操作 -- i=92
取钱线程 取钱:700.0 -- i=93
取钱线程-- 取钱 -- 执行完毕 -- i=93
取钱线程 开始要执行wait操作 执行了wait操作 -- i=94
存钱线程执行了wait操作 执行了wait操作-- i =93
存钱线程 存款:700.0 -- i=94
存钱线程-- 存钱 -- 执行完毕 -- i=94
存钱线程开始执行wati操作 执行了wait操作-- i =95
取钱线程 执行了wait操作 执行了wait操作 -- i=94
取钱线程 取钱:700.0 -- i=95
取钱线程-- 取钱 -- 执行完毕 -- i=95
取钱线程 开始要执行wait操作 执行了wait操作 -- i=96
存钱线程执行了wait操作 执行了wait操作-- i =95
存钱线程 存款:700.0 -- i=96
存钱线程-- 存钱 -- 执行完毕 -- i=96
存钱线程开始执行wati操作 执行了wait操作-- i =97
取钱线程 执行了wait操作 执行了wait操作 -- i=96
取钱线程 取钱:700.0 -- i=97
取钱线程-- 取钱 -- 执行完毕 -- i=97
取钱线程 开始要执行wait操作 执行了wait操作 -- i=98
存钱线程执行了wait操作 执行了wait操作-- i =97
存钱线程 存款:700.0 -- i=98
存钱线程-- 存钱 -- 执行完毕 -- i=98
存钱线程开始执行wati操作 执行了wait操作-- i =99
取钱线程 执行了wait操作 执行了wait操作 -- i=98
取钱线程 取钱:700.0 -- i=99
取钱线程-- 取钱 -- 执行完毕 -- i=99
存钱线程执行了wait操作 执行了wait操作-- i =99
1000.0
java多线程(四)的更多相关文章
- java 多线程四
java 多线程一 java 多线程二 java 多线程三 java 多线程四 一个生产者,消费者的例子: import java.util.Stack; /** * Created by root ...
- java多线程(四)-自定义线程池
当我们使用 线程池的时候,可以使用 newCachedThreadPool()或者 newFixedThreadPool(int)等方法,其实我们深入到这些方法里面,就可以看到它们的是实现方式是这样的 ...
- Java多线程(四) 线程池
一个优秀的软件不会随意的创建.销毁线程,因为创建和销毁线程需要耗费大量的CPU时间以及需要和内存做出大量的交互.因此JDK5提出了使用线程池,让程序员把更多的精力放在业务逻辑上面,弱化对线程的开闭管理 ...
- java多线程四种实现模板
假设一个项目拥有三块独立代码块,需要执行,什么时候用多线程? 这些代码块某些时候需要同时运行,彼此独立,那么需要用到多线程操作更快... 这里把模板放在这里,需要用的时候寻找合适的来选用. 总体分为两 ...
- Java多线程(四) —— 线程并发库之Atomic
一.从原子操作开始 从相对简单的Atomic入手(java.util.concurrent是基于Queue的并发包,而Queue,很多情况下使用到了Atomic操作,因此首先从这里开始). 很多情况下 ...
- java多线程(四)之同步机制
1.同步的前提 多个线程 多个线程使用的是同一个锁 2.同步的好处 同步的出现解决了多线程的安全问题 3.同步的弊端 当线程较多时, 因为每个线程都会去判断同步上的锁, 这样是很耗费资源的, 会降低程 ...
- JAVA多线程(四) Executor并发框架向RabbitMQ推送消息
github代码地址: https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service ...
- Java多线程——<四>让线程有返回值
一.概述 到目前为止,我们已经能够声明并使一个线程任务运行起来了.但是遇到一个问题:现在定义的任务都没有任何返回值,那么加入我们希望一个任务运行结束后告诉我一个结果,该结果表名任务执行成功或失败,此时 ...
- Java多线程——<八>多线程其他概念
一.概述 到第八节,就把多线程基本的概念都说完了.把前面的所有文章加连接在此: Java多线程——<一>概述.定义任务 Java多线程——<二>将任务交给线程,线程声明及启动 ...
随机推荐
- 树莓派研究笔记(3)-- 安装VNC
小屏幕太小了,眼睛快看瞎了,必须安装VNC 才行啊. 更新—2018-02-04 最新版本的系统中自带了VNC了,只需要在 菜单 Preferences -> Raspberry Pi Conf ...
- Android中常见的内存泄漏
为什么会产生内存泄漏? 当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏. ...
- [转载]Redhat Enterprise 6.1 如何使用免费的CentOS的yum源
Redhat Enterprise 6.1 如何使用免费的CentOS的yum源 graybull posted @ 2013年2月18日 22:29 in Unix/Linux with tags ...
- iOS应用推荐
RSS阅读器 Inoreader ***客户端 SuperWingy OpenWingy(已下架) 书签 Pocket 语音备忘录 Voice-Memos 编程语言学习 SoloLearn 社交 Tw ...
- 网易云易盾中标浙报反作弊服务 助力浙江新闻App健康发展
欢迎访问网易云社区,了解更多网易技术产品运营经验. 近日,国内领先的智能业务安全平台网易云易盾和浙报传媒旗下"浙江新闻"达成合作,易盾将为浙江新闻客户端提供大数据反作弊服务,助力浙 ...
- Ubuntu16.04跑loam_velodyne
Ubuntu16.04,ros kinetic 其实按照github上的README.md来编译就好 cd ~/catkin_ws/src git clone https://github.com/l ...
- 【Python发展】pandas和koalas
1.pandas介绍 Python 数据科学在过去几年中爆炸式增长, pandas 已成为生态系统的关键.当数据科学家得到一个数据集时,他们会使用 pandas 进行探索.它是数据处理和分析的终极工具 ...
- AngularJS(二)——常见指令以及下拉框实现
前言 学完AngularJS,总体上感觉没什么新鲜的东西,但是又感觉每一步都很新鲜,因为没有见过,又因为学到的语法函数和JavaScript差不多,本篇主要介绍一些AngularJS的指令,常见指令和 ...
- web安全问题-cookie
web安全问题 cookie 1.cookies只能设置过期 不能删除 <script> now.toGMTString() => 事件可以用来设置cookie document.c ...
- 非maven项目 idea project structure
原文链接:https://www.cnblogs.com/jajian/p/8081640.html 最近接手非maven项目,需要熟悉idea的project structure,以解决出现的环境报 ...