• 老迷糊

    老师您好,很喜欢您的这本书,对于AQS有个问题,当队列中的线程如果被中断,而此时先驱节点刚好执行完,轮到这个被中断的线程执行了,AQS是怎么处理的,没有找到这块的相关代码,请赐教,谢谢

    老迷糊发表于 2019/2/18 17:16:21
  • 云帆

    这本书中代码从哪找

    云帆发表于 2019/2/14 12:08:51
  • 李文文

    页码:242 • 印次: 1

    调用 awaitTermination 之后又调用了shutdown 方法

    应该修改为:调用 awaitTermination 之前又调用了 shutdown 方法吧?

    李文文发表于 2019/1/25 16:37:00
    • 翟陆续

      这个没问题的,这里说的是线程A调用了awaitTermination后会被阻塞,然后线程B调用了shutdown的情况

      翟陆续发表于 2019/1/31 18:45:18
  • 李文文

    页码:228 • 印次: 1

    一共有两处的:keeyAliveTime 笔误,应该修正为 keepAliveTime

    李文文发表于 2019/1/25 1:13:11
    • 翟陆续

      感谢指正,

      翟陆续发表于 2019/1/31 18:45:32
  • 李文文

    第 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 的相应实现源码就更好了

    李文文发表于 2019/1/22 0:23:24
    • 翟陆续

      嗯嗯,加上循环更好,本文的这个例子不够严谨

      翟陆续发表于 2019/1/31 18:46:24
    • 浩

      @翟陆续 您好,此示例确实无法体现出 condition 特性。

      浩发表于 2020/8/9 3:08:06
  • 1
  • 2
  • 3
  • 4
  • 5