黑马程序员技术交流社区
标题:
关于同步函数内进程抢夺执行权的问题
[打印本页]
作者:
李晓旭
时间:
2012-3-13 23:32
标题:
关于同步函数内进程抢夺执行权的问题
本帖最后由 李晓旭 于 2012-3-13 23:39 编辑
//t1 t2 两个线程共同执行下列方法
public synchronized void set(String name)
{
if(flag)
try{this.wait();}catch(Exception e){} //t1线程在这里等待的时候(放弃执行权) 为什么t2线程可以进到这个同步函数中?
this.name = name + ":::" + count++;
System.out.println(Thread.currentThread().getName()+"...producer"+this.name);
flag = true;
this.notify();
}
这是毕老师的一个线程间通讯的实例,当t1等待时,不是已经在同步函数中了么?
t2进程应该进不来,不是么?
作者:
赵孟恩
时间:
2012-3-13 23:54
这就是wait()与sleep()的不同了 当线程进入wait()时会自动释放锁, 使得其他线程可以使用同步代码块或者是函数! 只有别的线程调用wait线程对象的notify()唤醒该线程 sleep() 是暂停 , 而不释放锁 , 你说的t1进入wait 它会把锁释放, 所以t2线程可以运行
作者:
李晓旭
时间:
2012-3-14 00:05
哦~~说的太清楚,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2