Effective Java 读书笔记(9)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值