该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-30
对于锁的问题,关键是知道锁在谁手上
定义了一个synchronized 对象,意义上是把这个作为多线程之间的一把锁, 让线程wait,并不意味让这个对象wait 所以要释放正确的锁 |
|
返回顶楼 | |
发表时间:2009-12-30
zhaomiaojun 写道 对于锁的问题,关键是知道锁在谁手上
定义了一个synchronized 对象,意义上是把这个作为多线程之间的一把锁, 让线程wait,并不意味让这个对象wait 所以要释放正确的锁 这个观点比较认同,呵呵。 锁的是资源,不是线程类 |
|
返回顶楼 | |
发表时间:2009-12-30
xzqttt 写道 很明显的错误,oa和ob是两个对象 我在多线程方面不熟,很多时候会犯低级错误。 不过oa,ob为什么是两个对象。奇怪了,他们引用的都是lock吗?这个我确定,不用再讨论了。 不过感谢大家的讨论,这个问题我现在清楚不少了,呵呵,谢谢 还有:我都两次被评新手帖了,这到没什么。主要问题是每次被评为新手帖JavaEye都要我回答一次破问卷,才能重新发帖。好烦哪? JavaEye是不错的网站,但好东西是要简单的。规矩多了,不是好事 |
|
返回顶楼 | |
发表时间:2010-02-27
rain2005 写道 wait不是改变锁的状态,是把当前线程放到锁的等待队列里面,notify就是从锁的等待队列里面选择第一个等待的线程进行调度。每个对象都有一个唯一的锁。
wait, notify操作首先保证当前线程持有锁。 对于上面我有不观点:notify就是从锁的等待队列里面选择第一个等待的线程进行调度。 我认为是是从锁的等待队列里面唤醒一个线程,唤醒哪个线程是不确定的或任意的;如果等待队列里面只有一个线程,那么就会唤醒这个线程。这里的唤醒与sleep并不是对等关系。唤醒之后的线程进入就绪队列,等待被选择执行。 |
|
返回顶楼 | |
发表时间:2010-08-05
最近在研究线程
|
|
返回顶楼 | |