线程在执行的过程中,有可能会需要共享资源或者交换数据,则称这一组线程为交互线程。
线程间的交互存在两种关系:竞争和协作。
竞争关系是指,两个线程同时使用同一个资源时,会产生竞争。此时,由于线程的并发执行,可能会产生与时间有关的错误。
如以下例题:
本例题是模拟银行的账户,存款和取款均为线程,对不同账户的操作不会产生问题,但如果是对同一个账户同时存款和取款时,可能会发生错误,其代码如下:
public class Account {//账户类
String name;
double money;
public Account() {
name=null;
money=0;
}
public Account(String name,double money) {
this.set(name,money);
}
public void set(String name,double money) {
this.name=name;
this.money=money;
}
public String get_name() {
return name;
}
public double get_money() {
return money;
}
public void quqian(double money) {//取钱
if(money<0)
;
if(this.money>money)
this.money=this.money-money;
else
System.out.println("您的账户余额不足");
}
public void cunqian(double money) {//存钱
if(money>0)
this.money+=money;
}
public String toString() {
return"账户名:"+this.name+