老师您好,很喜欢您的这本书,对于AQS有个问题,当队列中的线程如果被中断,而此时先驱节点刚好执行完,轮到这个被中断的线程执行了,AQS是怎么处理的,没有找到这块的相关代码,请赐教,谢谢
这本书中代码从哪找
页码:242 • 印次: 1
调用 awaitTermination 之后又调用了shutdown 方法
awaitTermination
shutdown
应该修改为:调用 awaitTermination 之前又调用了 shutdown 方法吧?
这个没问题的,这里说的是线程A调用了awaitTermination后会被阻塞,然后线程B调用了shutdown的情况
页码:228 • 印次: 1
一共有两处的:keeyAliveTime 笔误,应该修正为 keepAliveTime
keeyAliveTime
keepAliveTime
感谢指正,
第 134 页的生产-消费模型,生产者和消费者在 run 方法里面应该要有个 while(true) {} 包裹的吧:
Thread producer = new Thread(new Runnable() { @Override public void run() { // while(true) while(true) { // 获取独占锁 lock.lock(); try { // 如果队列满了,则等待 while (queue.size() == queueSize) { notEmpty.await(); } // 添加元素 queue.add("ele"); // 唤醒消费线程 notFull.signalAll(); } catch (Exception e) { e.printStackTrace(); } finally { lock.unlock(); } } } });
如果作者能提及 BlockingQueue 的相应实现源码就更好了
BlockingQueue
嗯嗯,加上循环更好,本文的这个例子不够严谨
@翟陆续 您好,此示例确实无法体现出 condition 特性。
老师您好,很喜欢您的这本书,对于AQS有个问题,当队列中的线程如果被中断,而此时先驱节点刚好执行完,轮到这个被中断的线程执行了,AQS是怎么处理的,没有找到这块的相关代码,请赐教,谢谢
这本书中代码从哪找
页码:242 • 印次: 1
应该修改为:调用
awaitTermination之前又调用了shutdown方法吧?页码:228 • 印次: 1
第 134 页的生产-消费模型,生产者和消费者在 run 方法里面应该要有个 while(true) {} 包裹的吧:
如果作者能提及
BlockingQueue的相应实现源码就更好了