黑马程序员技术交流社区
标题:
synchronized
[打印本页]
作者:
Kikyou2014
时间:
2014-11-2 22:04
标题:
synchronized
在生产者消费者模型中,下面的代码:
class Resource
{
private String name;
private int num=0;
private boolean flag=false;
public Resource(String name)
{
this.name=name;
}
public synchronized void set()
{
while(flag)
try{wait();}catch(InterruptedException e){e.getMessage();}
num++;
System.out.println(Thread.currentThread().getName()+"...生产者:"+name+num);
flag=true;
notifyAll();
}
public synchronized void get()
{
while(!flag)
try{wait();}catch(InterruptedException e){e.getMessage();}
System.out.println(Thread.currentThread().getName()+"......消费者:"+name+num);
flag=false;
notifyAll();
}
}
复制代码
set和get方法都是用的一个this锁,当一个线程在其中一个方法中wait,那不是所有线程都进不去了吗?因为没有释放锁的操作
Lock里面还在finally中写了unlock
作者:
zxbzxb333
时间:
2014-11-2 22:36
wait()方法会释放出锁的啊。sleep()方法是不释放锁的。
作者:
Kikyou2014
时间:
2014-11-3 00:58
请问,在哪里讲到过wait方法释放锁的?麻烦说一声
作者:
wf111sxwf
时间:
2014-11-4 13:57
wait 释放锁 释放执行资格 释放执行权 毕老师视频里有
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2