1.”使用并发时需要解决的问题又多个,而实现并发也有多种方式,并且这两者之间没有明显的映射关系(通常只有模糊的界限),因此,你必须理解所有这些问题的特例,以便有效地使用并发“ --《Thinking in java》
2.并发解决的问题大体上可以分为两个大类:时间性能和安全性(设计的可管理型)。
3.java采用了传统的方式,即是在顺序语言的基础上提供对线程的支持,也就是将并发绑定到顺序型语言上。
4.尽管jdk有10个优先级,但与多数操作系统都不能映射得很好。比如win有7个优先级且是不固定的,所以这种映射关系也是不确定的。sun的Solaris有2^31个优先级。唯一可移植的方法是在调整优先级的时候,只使用MAX_PRIORITY\NORM_PRIORITY\MIN_PRIORITY三种级别。
5.在构造器中启动线程可能会变得有问题,因为另外一个任务可能会在构造器结束之前开始运行,这意味着该任务可能访问处于不稳定状态的对象,这是优先选择Executor而不是显示的创建Thread对象的另外一个原因。有时候使用内部类来将线程代码隐藏在类中非常有用。
6.对于java中的volatile的使用,有一个评判标准看是否适合使用:只有在状态真正独立于程序内其他内容时才能使用 volatile ,这条规则能够避免将这些模式扩展到不安全的用例。
未完待续。。。