模式
如果是需要for循环处理item list,
每个item之间,相互没有影响,可以独立进行处理,这种天生就适合多线程并行处理
每个item的处理又分为好几个步骤,每个步骤都比较耗时,且下一步依赖上一步的情况
这种模式,就非常适合使用生产者-消费者模式,下一步依赖上一步的情况,又适合采用级联的生产者-消费者模式,也就是上一个生产者消费者中的消费者,可以成为下一个生产者消费者中的生产者
电子发票的生成,用户先提交发票生成的需求,然后异步执行发票生成逻辑,生成成功后再短信或者微信通知用户
总结
性能优化,要多多利用缓存机制,多多利用异步机制。但是,引入新的技术就要注意技术的副作用,比如,
引入缓存就需要注意缓存是否过期的问题:通过摘要机制解决
并发的线程安全问题
记住一个宗旨,在进行并发编程时,java的线程们一定是协作式的运行的,而不是抢占式的
比如,main线程调用thread1.interrupt(),就是main线程希望线程thread1停下来,响应这个中断,此时就是main线程在试图与线程thread1协作
java大师们,把java线程设计成协作式的最大原因,是为了让每个线程都有充足的时间做自己的清理工作
守护线程和main线程共死,守护线程中的finally不一定会被执行,所以如果有明确需要释放的资源,则不能使用守护线程