第一部分:
ConcurrentHashMap的使用场景是:多个线程的共享资源,虽然在操作中有可能增加和删除数据,但是主要目的是共享
BlockingQueue的使用场景是:生产者和消费者场景。当产生的数据过多的时候,对方(消费者)来不及处理,就将数据放到BlockingQueue中,以免数据的丢失,等待消费者的处理。
例如: BlockingQueue<String> datas= new LinkedBlockingQueue<String>();
如果构造一个LinkedBlockingQueue对象,而没有指定其容量大小,LinkedBlockingQueue会默认一个类似无限大小的容量(Integer.MAX_VALUE)。
ArrayBlockingQueue和LinkedBlockingQueue是两个最普通也是最常用的阻塞队列,一般情况下,在处理多线程间的生产者消费者问题,使用这两个类足以。