`
swordinhand
  • 浏览: 312038 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Effective Java 读书笔记(9)

    博客分类:
  • JAVA
 
阅读更多
    66,同步对共享可变数据的访问。synchronized关键字不仅能保证对对象的互斥访问,还能保证方法对对象的修改可以被其他方法观察到。这第二点挺难理解的,可能是跟JAVA的内存模型有关系,还需要深入了解。感觉就像数据库操作的commit一样,你写了值,但是没commit的时候,你看到的跟别人看到的就是不一样的。另外,书上那个直接利用变量的原子性来控制线程,不加synchronized的例子,在我的机器上可以正常运行,而不会像书上说的那样永不终结。
    67,避免过度的同步。在同步块内部,不要调用外来的代码,不要调用可能被覆盖的代码。同步区域内的代码,干的活越少越好。
    68,使用Executor和task而不是Thread。Executor框架以前用的不多,有机会要尝试一下。
    69,使用同步工具而不是wait和notify。同步的集合类也没怎么用过,以后要尝试一下。
    70,为线程安全性写文档。
    71,谨慎的使用惰性初始化。我个人以为,正常的程序很少需要用到这个,性能瓶颈也很少会在这上面的。
    72,不要依赖线程调度。线程的执行顺序是不可保证的,如果你的代码依赖线程执行顺序,那很可能会失败。
    73,避免使用线程组。嗯,我从来都不知道ThreadGroup到底有啥用。

    多线程的程序是比较困难,要多写多试,JDK1.5也引入了很多新东西,需要系统的学习一下才好。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics