摘要:
线程池 3大方法,7大参数,4大拒绝策略 降低资源消耗 提高响应速度 方便管理 线程复用,控制最大并发数,管理线程 最大线程定义 CPU密集型:几核cpu就设置为几,通过代码去获取Runtime().getRuntime().availableProcessors() IO密集型:判断程序中十分耗费 阅读全文
摘要:
BlockingQueue 实现类 Collection->Queue->BlockingQueue 使用场景:多线程并发处理,线程池 Queue源码 public interface Queue<E> extends Collection<E> { boolean add(E e); boolea 阅读全文
摘要:
ReadWriteLock读写锁 ReadWriteLock只允许一个线程修改,但是get()方法只读,不修改数据,实际上允许多个线程同时调用,使用ReadWriteLock可以解决这个问题 适合读多写少的场景 源码 public interface ReadWriteLock { Lock rea 阅读全文
摘要:
Semaphore 公共资源有限时用户控制流量 构造函数,默认非公平锁 public Semaphore(int permits) { sync = new NonfairSync(permits); } public Semaphore(int permits, boolean fair) { s 阅读全文
摘要:
Callable Runnable没有返回值:public abstract void run();,Callable可以有返回值:V call() throws Exception; 可以抛出异常 方法不同,run()/call() 源码 public interface Callable<V> 阅读全文
摘要:
CountDownLatch减法计数器 CountDownLatch 允许一个或多个线程等待一些特定的操作完成,而这些操作是在其它的线程中进行的 CountDownLatch 构造函数中有一个 count 参数,表示有多少个线程需要被等待。其他线程调用countDown()方法,每调用一次 coun 阅读全文
摘要:
集合类不安全 ConcurrentModificationException并发修改异常 解决办法 写入时复制 使用工具类Collections List不安全 import java.util.*; import java.util.concurrent.CopyOnWriteArrayList; 阅读全文