前情提要:在开发和调试多线程的过程中有些实践感悟。多线程的并发性决定其无序性。把任务切成小块后让线程们开始各自消化。当然你要确保这些线程不会争用资源。否则你应该加上同步锁。
谁拥有谁提供原则。这个原则原是面向对象的中的一条。但在多线程在这个思想特别有用。因为多线程中的多并发让你无暇顾及每个线程的事务。所以和线程自身相关的东西还是在线程中自己处理。
使用完及时清空。有喜欢在循环清空list或map的习惯。多线程则更倾向于任务完成后及时清理。在多线程开始前先整体清理一遍。后面就是各自清理自己的了。
原子性操作。特指对计数器的操作。加完一条记录后计数器加一。这两个操作一定要写在同一个同步锁方法中。
整除清空和满值清空。buffer的清理,如满 1000输出一次到文件。计数器能被1000整除作为判断标准性能会低于判断小于1000。多开后会有影响。