java并发编程笔记--volatile与synchronized关键字
合理使用并发 单线程程序并不一定比多线程程序性能差 1) 当任务较轻,执行任务的消耗没有开启多线程消耗多时;2) 当上下文切换带来的消耗较高时;3) 当多线程的同步处理代价过大时; 并发的优势 1) 提高系统的吞吐率:能够合理的利用IO等待时间等情况;2) 提高响应性:防止因为处理业务等待导致响应时间过长;3) 充分利用多核CPU资源:单线程程序对多核CPU使用效率不高;4) 最小化系统资源的使用:线程共享资源,避免了多进程造成的资源浪费;5) 简化程序结构:现实世界是并行的,多线程能够更容易的表达现实世界; 如何减少上下文切换? 1) 无锁并发编程:不同的线程尽可能减少共享数据的范围,或者不共享数据;对于共享数据,可以考虑将数据分片,操作时,不同的线程访问不同的分片,从而减小数据共享范围;2) CAS算法:使用CAS算法,通过乐观锁代替悲观锁,减少不必要的锁;3) 最少线程:线程并非越多越好,使用合适的线程数,避免产生大量的上下文切换;4) 协程:在单个线程中实现多任务调度,并在单个线程里维护多个任务间的切换; 如何避免死锁? 1) 避免一个线程同时获取多个锁;2) 避免一个线程在锁...