不用同步synchronized 如何保持一个人在操作某个对象呢 ,比如说大家都可以操作A,但是如果有C操作A时候,B不能操作,只能等待,等到C完了,B才可以调用
看到一个方法,是在A里面设置一个boolean属性,想当于一个锁,只有在ture的时候才能使用,令一个在等待,这个等待时间如何控制呢?
看到一个方法,是在A里面设置一个boolean属性,想当于一个锁,只有在ture的时候才能使用,令一个在等待,这个等待时间如何控制呢?
当C操作A的时候, A的boolean属性打为false,当B产生调用的时候,检查A的boolean属性, 如果为false则在一个While循环中等待。时间可以由你的应用确定, 估算一下, 把A调用完要花多少时间。就是你要设置的时间。
class SimplePC
{
int n;
boolean valueSet=false;
synchronized int get()
{
if(!valueSet)
{
try
{
wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
System.out.println("get:"+n);
valueSet=false;
notifyAll();
return n;
}
synchronized void put(int n)
{
if(valueSet)
{
try
{
wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
this.n= n;
valueSet=true;
System.out.println("put:"+n);
notifyAll();
}
}