由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Java Blocking Queue问题
相关主题
thread safe blocking queue问题求救: 打印binary tree
这个Java blocking queue实现是不是有问题?问个题:get max value from Queue, with O(1)?
再问一个blockingqueue的问题面试题
如何用JAVA中的circular array of queue 解决Josephus problem? (转载)一道很难的面试题
请教一个系统设计问题 (转载)Two programming questions...
如何实现binary tree的从下到上的分层打印?A家电面
share 面试题thread-safe blockingqueue
这个用stack实现queueU店面
相关话题的讨论汇总
话题: queue话题: java话题: blocking话题: 调用话题: 线程
进入JobHunting版参与讨论
1 (共1页)
p*******8
发帖数: 344
1
网上看到的实现:http://tutorials.jenkov.com/java-concurrency/blocking-queues.html
如果用一个锁,那么同时只能有一个线程调用其中的一个方法,比如说线程1调用put()
, 发现queue满了,就等在那;其他线程肯定不能调用任意一个方法,线程1因为block
也不会去调用take(),那不是永远锁着了?
g*****g
发帖数: 34805
2
You don't need another lock.

()
block

【在 p*******8 的大作中提到】
: 网上看到的实现:http://tutorials.jenkov.com/java-concurrency/blocking-queues.html
: 如果用一个锁,那么同时只能有一个线程调用其中的一个方法,比如说线程1调用put()
: , 发现queue满了,就等在那;其他线程肯定不能调用任意一个方法,线程1因为block
: 也不会去调用take(),那不是永远锁着了?

b******n
发帖数: 851
3
说过多少遍了, just Google grepcode blocking queque, 就知道Java怎么实现
blockingqueue

()
block

【在 p*******8 的大作中提到】
: 网上看到的实现:http://tutorials.jenkov.com/java-concurrency/blocking-queues.html
: 如果用一个锁,那么同时只能有一个线程调用其中的一个方法,比如说线程1调用put()
: , 发现queue满了,就等在那;其他线程肯定不能调用任意一个方法,线程1因为block
: 也不会去调用take(),那不是永远锁着了?

p*******8
发帖数: 344
4
好虫大神能展开说说吗?synchronized就算一个lock了吧?

【在 g*****g 的大作中提到】
: You don't need another lock.
:
: ()
: block

p*******8
发帖数: 344
5
看了啊,ArrayBlockingQueue的思路跟上面链接的一样,LinkedBlockingQueue用了两
个单独的takeLock, putLock, 怎样保证thread-safe?
LinkedBlockingQueue: http://www.docjar.com/html/api/java/util/concurrent/LinkedBlockingQueue.java.html
ArrayBlockingQueue:
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/

【在 b******n 的大作中提到】
: 说过多少遍了, just Google grepcode blocking queque, 就知道Java怎么实现
: blockingqueue
:
: ()
: block

H********n
发帖数: 99
6
对于同一个queue对象,同时只能有一个synchronized的method被调用,所以用
synchronized就完全可以做到了。

()
block

【在 p*******8 的大作中提到】
: 网上看到的实现:http://tutorials.jenkov.com/java-concurrency/blocking-queues.html
: 如果用一个锁,那么同时只能有一个线程调用其中的一个方法,比如说线程1调用put()
: , 发现queue满了,就等在那;其他线程肯定不能调用任意一个方法,线程1因为block
: 也不会去调用take(),那不是永远锁着了?

p*******8
发帖数: 344
7
我明白你的意思,我找到我前面问题的答案了:
1. 调用wait() 会release掉当前的锁, 所以其他线程可以调用take()
2. 关于java linkedBlockingQueue的实现,为什么两个不用的锁也可以, 因为enqueue
/dequeue的操作只分别对head/tail的操作,所以put/take可以同时进行

【在 H********n 的大作中提到】
: 对于同一个queue对象,同时只能有一个synchronized的method被调用,所以用
: synchronized就完全可以做到了。
:
: ()
: block

c***1
发帖数: 652
8
Thread 1 is in wait() state, it doesn't hold lock of the queue.

()
block

【在 p*******8 的大作中提到】
: 网上看到的实现:http://tutorials.jenkov.com/java-concurrency/blocking-queues.html
: 如果用一个锁,那么同时只能有一个线程调用其中的一个方法,比如说线程1调用put()
: , 发现queue满了,就等在那;其他线程肯定不能调用任意一个方法,线程1因为block
: 也不会去调用take(),那不是永远锁着了?

1 (共1页)
进入JobHunting版参与讨论
相关主题
U店面请教一个系统设计问题 (转载)
java同步问题请教如何实现binary tree的从下到上的分层打印?
滚烫烫的G店面面经share 面试题
Java 面试题这个用stack实现queue
thread safe blocking queue问题求救: 打印binary tree
这个Java blocking queue实现是不是有问题?问个题:get max value from Queue, with O(1)?
再问一个blockingqueue的问题面试题
如何用JAVA中的circular array of queue 解决Josephus problem? (转载)一道很难的面试题
相关话题的讨论汇总
话题: queue话题: java话题: blocking话题: 调用话题: 线程