黑马程序员技术交流社区
标题:
多线程的同步函数问题
[打印本页]
作者:
623376390
时间:
2017-3-20 19:45
标题:
多线程的同步函数问题
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次。。。。。再解锁,有点蒙了,
请王大婶们给指点一二
作者:
623376390
时间:
2017-3-20 19:51
循环多次指的是同步函数外有个while循环
作者:
623376390
时间:
2017-3-20 20:40
懂了,每运行一次同步函数上锁,解锁,线程抢权限那是生死有命,富贵在天,有可能每个人都抢到了,也有可能只有一个人抢的到,轮番抢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2