多线程编程时的注意事项--摘抄自:Practical Java, Effective Java

多线程编程时的注意事项

 

摘抄自:Practical Java

1、  实践34:将同步化(synchronized)降至最低

2、  实践46:对instance函数,synchronized锁定的是对象,不是函数,也不是代码

3、  实践47:对static函数,synchronized锁定的是这个classClass对象

4、  实践48:用getter/setter替换public/protected的数据

5、  实践49:避免无谓的synchronized

6、  实践50:访问共享变量时,使用synchronized或者volatile

7、  实践51:在单一操作(single operation)中锁定所有用到的对象

8、  实践52:以固定而全局性的顺序取得多个lock以避免死锁

9、  实践53:优先使用notifyAll()。(而不是notify

10、              实践54:针对wait()notifyAll()使用spin lock

11、              实践55:使用wait()notifyAll()。(而不是轮询循环polling loops

12、              实践56:不要对locked object的引用重新赋值

13、              实践57:不要调用stop()suspend()

14、             实践58:通过线程间的协作来优雅的终止线程

 

摘抄自Effective Java

1、  48条:对共享可变数据的同步访问

2、  49条:避免过多的同步

3、  50条:永远不要在循环的外面调用wait()

4、  51条:不要依赖于线程调度器

5、  52条:线程安全性的文档化

6、  53条:避免使用线程组

你可能感兴趣的:(多线程编程时的注意事项--摘抄自:Practical Java, Effective Java)