effertive 读书记录

  • 优先使用基本类型相比于包装类型
  • 谨慎使用本地的方法:jvm 的实现越来越块,不一定比本地方法慢,本地方法安全性很低

  • Equal 的原则

    • 用== 判断是否相等
    • 判断类型
    • 把对象转换成对应的类型
    • 对于 类 中的 关键 域 是否一一匹配
    • 对 域的 判断最好 把最不可能的域先放前面
    • 是否对称 是否一致 是否传递

并发

第66条:同步访问共享的数据

其实解决线程安全问题最好的办法就是不共享可变的数据。要么共享不可变的数据,要么不共享数据。简而言之:尽量将可变数据限制在单线程中维护。或者将变量设置成不可修改
当多个线程共享可变数据的时候,每个读或者写的线程都必须同步,可以使用synchronized关键字来保证方法或者代码块的同步,或者也可以使用volatile来确保数据的可见性,但是不能保证原子性,或者使用一线线程安全的类(比如concurrent包下面的类)。

第67条:避免过度使用同步

第68条:使用executer和task

jdk 1.5之后提供了concurrent包,里面包含了线程池框架。通过线程池我们可以更好地控制线程资源,可以方便地创建、管理、销毁、结束线程。concurrent提供了可以直接创建线程池的工厂类Executors,也可以直接使用ThreadPoolExecutor类来最大程度化的控制线程池操作。(计划去阅读<<java并发编程实践>>

第79条:并发工具优先于wait和notify

坚持原创技术分享,您的支持将鼓励我继续创作!