接上篇:https://developer.aliyun.com/article/1227033?spm=a2c6h.13148508.setting.20.18334f0eu8bmt9
十、 线程
1. 在单线程中,尽量使用非线程安全类
使用非线程安全类,避免了不必要的同步开销。
反例:
正例:
2. 在多线程中,尽量使用线程安全类
使用线程安全类,比自己实现的同步代码更简洁更高效。
反例:
正例:
3. 尽量减少同步代码块范围
在一个方法中,可能只有一小部分的逻辑是需要同步控制的,如果同步控制了整个方法会影响执行效率。所以,尽量减少同步代码块的范围,只对需要进行同步的代码进行同步。
反例:
正例:
4. 尽量合并为同一同步代码块
同步代码块是有性能开销的,如果确定可以合并为同一同步代码块,就应该尽量合并为同一同步代码块。
反例:
正例:
5. 尽量使用线程池减少线程开销
多线程中两个必要的开销:线程的创建和上下文切换。采用线程池,可以尽量地避免这些开销。
反例:
正例:
后记
作为一名长期奋战在业务一线的“IT民工”,没有机会去研究什么高深莫测的“理论”,只能专注于眼前看得见摸得着的“技术”,致力于做到“干一行、爱一行、专一行、精一行”。
看到重庆一农民工携子举包扛货照片,仿佛看到了自己,不禁填词一首:
《如梦令·携子举包扛货》
携子举包扛货,皆是生活所迫。
虽苦也觉甜,惟愿小儿安妥。
沉默,沉默,长大可别学我。