• binary
    2019-03-28
    这个专栏内容值得反复阅读!
    
     71
  • Jialin
    2019-03-28
    建议iamNigel同学去搜索下Integer String Boolean相关的知识,Integer会缓存-128~127这个范围内的数值,String对象同样会缓存字符串常量到字符串常量池,可供重复使用,所以不能用来用作锁对象,网上有相关的知识讲解和面试问题
    老师讲解的非常不错,单看每一节,觉得自己已略一二,学完这节才发现要自己的知识点要串起来,整体了解并发

    作者回复: 感谢帮忙回复!

     1
     28
  • Demon.Lee
    2019-03-28
    这个课程99便宜了,建议涨价,一定要反复多看几遍

    作者回复: 这个建议可以多提😃

    
     22
  • linqw
    2019-03-30
    学完这模块,自己理下,老师帮忙看下哦
    1、产生并发的原因:cpu、内存、磁盘速度的差异,在硬件和软件方面解决速度差异引发的并发问题,cpu缓存->可见性,线程切换->原子性,编译优化->重排序,引发并发问题的根源。
    2、并发的解决:可见性解决方法->volatile、synchronized,原子性的解决方法->互斥锁,重排序->volatile,禁掉编译优化
    3、解决并发原子性产生的问题:死锁,死锁产生的所有条件->①资源互斥②不能抢占③占有且等待④循环等待,死锁的解决办法->①按锁的顺序获取②增加锁的分配器。
    4、宏观角度分析,以上都是从微观角度进行分析并发问题,宏观,即安全问题,性能问题,活跃性问题
    5、本质看问题,管程
    6、实际看问题,java生命周期,线程数的分配,线程的执行
    7、以子之矛攻子之盾,面向对象解决并发问题, 属性final、私有、只有getter方法没有setter方法,属性的赋值,深复制再进行操作等等
    展开

    作者回复: 很全面了

    
     19
  • 小辉辉
    2019-05-17
    学了专栏之后,在项目里面写并发的BUG更有信心了
    
     12
  • 皮卡皮卡丘
    2019-03-28
    看下源码就知道了,Integer里有个内部类,会缓存一定范围的整数

    作者回复: 感谢帮忙回复!

    
     9
  • zhangtnty
    2019-03-28
    王老师好,在第11讲中,new出的对象放入堆,局部变量放入栈桢。那么new出的线程会放到哪里?麻烦老师这块能否展开讲一下,谢谢😊

    作者回复: 线程也是个对象,对象的引用在栈里,对象在堆里

    
     7
  • 刘得淼
    2019-03-28
    “学好理论有思路,关注细节定成败。”通过学前几章,帮助项目组里解决个并发的bug。现学现卖。

    作者回复: 看来学的很好😃

    
     6
  • IamNigel
    2019-03-28
    Integer string Boolean的可重用没太明白,希望老师讲解下
    
     6
  • zws
    2019-03-29
    推荐 java 并发编程实战 加深理解。
     1
     5
  • 红衣闪闪亮晶晶
    2019-04-07
    老师,我有一点不明白,我看到其他大佬的评论去搜了关于integer的知识,我明白integer内部有缓存,比如超过127会重新新建一个类,这样的sync锁的就是不同的对象了,可是如果是-128 - 127之间,会重用缓存,那他们不就是同一个对象了吗,为什么还会锁不住呢?

    作者回复: 如果100个人的项目都用这个缓存的对象做锁,还有人一直不释放,那整个系统都不了用了,锁也要隔离的

     1
     4
  • 探索无止境
    2019-08-26
    对于Nginx为什么属于IO密集型的?我的理解是这样,这个也要看场景,Nginx作为反向代理服务器,那么它会通过负载均衡策略调用后端的服务器,而远程调用属于IO操作,所以此处Nginx作为IO密集型的操作。但因为它 采用的是非阻塞IO模型,所以工作的方式又类似于CPU密集型,所以设置的最佳线程数为CPU的核数。不知道这样的理解是否正确?请老师指正

    作者回复: 正确,nginx里一般都是设置成worker进程和CPU一一对应的

    
     3
  • 江湖夜雨
    2019-07-28
    redis是不是也是IO密集型,所以设置为单线程?

    作者回复: 是的

    
     3
  • 凌尘
    2019-08-13
    真的不错,让人受益匪浅~

    作者回复: 😄

    
     2
  • 彭锐
    2019-03-28
    String s1 = "lock";
    String s2 = "lock";
    这两个是一个对象,即重用了。代码上看起来是操作了一个,其实是操作了两个。

    作者回复: 这个例子好

    
     2
  • Carpoor奇
    2019-12-12
    老师,因为String ,Integer,Boolean有缓存之后,虽然我们代码定义了两个对象,但是实际上这两个引用都指向堆里的同个对象,(值相同的情况)所以选择其中一个对象加锁了,实际上另一个对象也被加锁了

    如果两个引用指向的值不同就没有问题,当两个引用指向的值相同就有问题了

    这样理解对吗?
    展开

    作者回复: 对

    
     1
  • code-artist
    2019-07-20
    老师讲得深入浅出
    
     1
  • 小文同学
    2019-07-12
    中间暂停了有1周,总算把第一部分学习完了。收益匪浅,编写游戏代码的时候对并发的要求比较高,之前积累了不少的小经验。这部分的理论虽然没实际指导我写并发代码的技巧,但自己总算能顺着的文章收拾了之前零零碎碎的小经验和知识。期待剩下的内容,最后感谢宝令老师编写的专栏。

    作者回复: 您客气啦😄

    
     1
  • Ryan
    2019-03-29
    第二模块出了么?老师

    作者回复: 周六出

    
     1
  • 李湘河
    2019-03-28
    复习了一遍想问老师一个问题,我对java中synchronized理解是只能解决可见性和原子性问题,不能解决有续性问题,但是java中synchronized是管程模型的实现,而管程模型可以解决并发编程里的所有问题(同步和互斥),这个意思是也可以解决java内存模型中的有续性问题吗?不知道我的理解对不对,还请老师解答一下?

    作者回复: 能解决有序性,会禁止重排的

    
     1
我们在线,来聊聊吧