标签: concurrent

4 篇文章

深入理解 Java 锁与线程阻塞
相信大家对线程锁和线程阻塞都很了解,无非就是 synchronized, wait/notify 等, 但是你有仔细想过 Java 虚拟机是如何实现锁和阻塞的呢?它们之间又有哪些联系呢?如果感兴趣的话请接着往下看。 为保障多线程下处理共享数据的安全性,Java 语言给我们提供了线程锁,保证同一时刻只有一个线程能处理共享数据。当一个锁被某个线程持有的时候,另一个线程尝试去获取这个锁将产生线程阻塞,直…
《Java 并发编程实战》笔记
线程带来的风险: 1. 安全性问题(永远不发生糟糕的事,避免竞态条件) 2. 活跃性问题(某个正确的事情最终会发生,死锁,饥饿,死锁) 3. 性能问题 线程安全性:当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类时线程安全的。 竞态条件:在并发编程中,由于不恰当的执行时序而出现不正确的结果。 锁可重入意味着获取锁的操作的粒度是线程而不是调用。 在没有同步的情况下,编译器,处理器…
线程池 ThreadPoolExecutor
常用线程池 newFixedThredaPool 固定线程数量的线程池,改线程池中的线程数量始终不变。当有一个新任务提交时,若有空闲线程,则立即执行,否则会被暂存到一个任务队列中 newSingleThreadExecutor 只有一个线程的线程池 newCachedThreadPool 可根据实际情况调整线程数量的线程池。若有空闲线程可以复用,则优先使用,否则创建新线程。执行完毕后返回线程池复用…
java并发包
Java 并发包位于: java.util.concurrent ArrayBlockingQueue 定长阻塞队列 ConcurrentHashMap 高性能线程安全的HashMap,使用分段锁提供高能 ConcurrentLinkedQueue 高性能线程安全LinkedQueue,使用CAS操作代替锁提高性能 CopyOnWriteArrayList 线程安全的ArrayList,写时复制,…