摘要:
并发编程模型 1.两个关键问题 1)线程之间如何通信 共享内存程之间共享程序的公共状态,通过写-读内存中的公共状态进行隐式通信 消息传递程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 2)线程之间如何同步 线程之间没有公共状态,线程之间必须通过发送消息来显式进行通信 总结:Java的并发 阅读全文
摘要:
简介 合理地使用线程池能够带来3个好处: 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性:线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定 性,使用线程池可以进行统 阅读全文
摘要:
ConcurrentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的HashMap。 为什么要使用ConcurrentHashMap。 jdk1.7的HashMap可能导致程序死循环:多线程会导致HashMap的Entry链表形成环形数据结构。而jdk1.8引入红 阅读全文
摘要:
CountDownLatch 允许一个或多个线程等待其他线程完成操作,某个线程A等待若干个其他线程执行完任务之后,它才执行.CountDownLatch强调的n个线程,等待若干个其他线程结束,线程开始执行 CyclicBarrier 强调的是n个线程,大家相互等待,只要有一个没完成,所有人都得等着 阅读全文
摘要:
简介 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。 1)synchronized关键字与java.util.concurrent.locks的lock接口 synchronized关键字 JVM层面,会隐式地获取锁,获取和释放固化了,也就是先获取再释放。 阅读全文