class input implements Runnable
{
private resource r=null;
public input(resource r)
{
this.r=r;
}
@Override
public void run()
{
// TODO Auto-generated method stub
int x=0;
while(true)
{
synchronized (r)
{
// System.out.println("input.run()");
if (x==0)
{
r.name="mike";
r.sex="nannanna";
r.b=0;
}
else
{
r.name="girl";
r.sex="女女女女女";
r.b=0;
}
// r.flag=true;
// r.notify();
}
x=(x+1)%2;
r.b=0;
}
}
}
第一个问题:synchronized (r)这个同步函数的所谓线程锁,上锁和解锁的执行者是谁,cpu还是线程本身、
第二个问题: synchronized (r)这个锁在解锁原理是什么,是同步函数代码块儿执行一次就解锁,还是循环多次再解锁,存粹是看cpu的性情,可能循环一次就解锁,也可能循环10次20次。。。。。再解锁,有点蒙了,
请王大婶们给指点一二
|
|