prince的文章

29、Java并发编程:非阻塞算法(非阻塞并发数据结构、比较交换、乐观锁、共享意向修改、ABA问题、非阻塞算法模板)

并发中所谓的非阻塞算法是允许线程访问共享状态(或以其他方式进行协作或通信)而不会阻塞所涉及线程的算法。 更笼统地说,如果一个线程的挂起不会导致该算法中涉及的其他线程挂起,则该算法称为非阻塞算法。 为了更好地理解阻塞和非阻塞并发算法之间的区别...

28、Java并发编程:同步器的结构

很多同步器(锁,信号量,阻塞队列等)虽然在功能上有所不同,但它们的内部设计通常没有太大不同。 换句话说,它们在内部由相同(或相似)的基本部分组成。 在设计同步器时,了解这些基本部分会很有帮助。 本文将重点讨论这些部分。 大多数(如果不是全部...

27、Java并发编程:比较交换(CAS)

比较交换是设计并发算法时使用的一种技术。 基本上,比较交换将期望值与变量的实际值进行比较,如果变量的实际值等于期望值,则将变量的值替换为新的值。 比较交换听起来可能有点复杂,但是一旦你理解了它,实际上就相当简单了,所以让我对这个话题做进一步...

26、Java并发编程:线程池(Thread Pool)

当需要限制应用程序中同时运行的线程数时,线程池很有用。 启动新线程会带来性能开销,并且每个线程还为其栈等分配了一些内存。 与其为每个并发执行的任务启动新线程,不如将任务传递给线程池。 一旦池中有任何空闲线程,就会将任务分配给其中一个并执行。...

25、Java并发编程:阻塞队列

阻塞队列是这样一个队列,当尝试在队列为空时出队,或者尝试在队列已满时入队,它将阻塞。 尝试从空队列中出队的线程将被阻塞,直到其他线程插入一项到队列中为止。 尝试使一个项目进入满队列的线程将被阻塞,直到某个其他线程在队列中腾出空间为止,方法是...

23、Java并发编程:重入锁死

重入锁死是一种类似于死锁和嵌套管程锁死的情况。 重入锁死在“锁”和“读/写锁”一文中也有涉及。 如果线程重新进入Lock,ReadWriteLock或其他不可重入的同步器,则可能会发生重入锁死。 可重入是指已持有锁的线程可以重新获取该锁。 ...