多线程并发最佳实践

多线程并发最佳实践

  • 使用本地变量;
  • 使用不可变类,可以降低代码中同步数量;
  • 最小化锁的作用于范围,阿姆达尔定律(安达尔定理):S = 1 / (1 - a + a/n),a代表并行计算部分所占的比例,n代表并行处理的节点个数,S代表加锁比;当a = 1时,只有串行没有并行,加锁比等于n;
  • 使用线程池的Executor,而不是直接new Thread执行;
  • 宁可使用同步也不要使用线程的wait和notify,应该优先使用线程的同步工具CountDownLatch,Semaphore等,使用BlockingQueue实现生产消费的设计比使用wait和notify要好;
  • 使用Blocking Queue实现生产消费模式;
  • 使用并发结合而不是加了锁的同步集合;
  • 使用Semaphore创建有界的访问;
  • 宁可使用同步代码块,也不使用同步的方法;
  • 避免使用静态变量,如果必须用,尽量把其变成final的,如果是集合的话,可以让其变成只读结合;

你可能感兴趣的:(多线程并发最佳实践)