在并发方法中,咱们要保证一致性和准确性,可是有但愿在给定的硬件条件下达到最佳性能.html
当咱们彻底使用了不可变共享变量模型,那么咱们将很容易地规避竞争条件或者一致性的问题.由于当线程再也不竞争访问可变数据的时候,程序就无需考虑变量在多个线程之间的可见性问题和穿越内存栅栏的问题,同时,咱们也不准担忧如何控制线程的执行序列.并发
因此咱们应当尽量提供共享不可变性!!!不然就应该遵循你隔离可变性原则,也就是只有一个线程能够访问可变变量.性能
那么咱们在拆分任务时,设计poolsize和tasks是须要考虑的,具体多少参见:求解大型素数的问题spa
首先咱们要将任务拆分为更小的,能够并发的子任务.若是任务是IO密集型或者有关键的IO操做,那么开多个线程将有助于提升性能,在这种状况下,线程数应该远远大于cpu核心数,具体多少 使用 线程数=cpu可用核心数/(1-阻塞系数),阻塞系数在0-1 来计算.线程
对于计算密集型,poolsize和tasks的大小是须要考虑的,若是问题能够被拆分红多个子任务,那么程序少开和处理器那么多个线程,对程序是大有助益的.同时咱们要注意少许线程执行多个任务的时候的均衡负载问题.设计