下面这段代码有没有安全问题,测试了半天和我想法不太一样,还是我没有测出来
public class Test {
public static void main(String[] args) {
Table table=new Table();
Thread t1 = new Thread(){
public void run(){
while(true){
int bean = table.getBean();
Thread.yield();
System.out.println(getName()+":"+bean);
}
}
};
Thread t2 = new Thread(){
public void run(){
while(true){
int bean = table.getBean();
Thread.yield();
System.out.println(getName()+":"+bean);
}
}
};
t1.start();
t2.start();
}
}
class Table{
User user=new User();
public int getBean(){
return user.getBean();
}
}
class User{
private int beans = 20;
public int getBean(){
if(beans==0){
throw new RuntimeException("没有豆子了!");
}
Thread.yield();
return beans--;
}
}