76-85行 注释:这里主要讲的是同为线程安全的Hash,HashTable和ConcurrentHashMap的区别。ConcurrentHashMap(下文用本类指代)虽然是线程安全的,但是检索操作(比如get,是不…
分类:java并发
源码阅读 - java.util.concurrent (一)
java.util.concurrent这个包大致可以分为五个部分: Aomic数据类型 这部分都被放在java.util.concurrent.atomic这个包里面,实现了原子化操作的数据类型,包括&n…
Java io.netty.util.ReferenceCountUtil 代码实例
原文:https://www.helplib.com/Java_API_Classes/article_64580 以下是展示如何使用io.netty.util.ReferenceCountUtil的最佳示…
并发编程(十三)—— Java 线程池 实现原理与源码深度解析 之 Executors(三)
前两篇文章讲了线程池的源码分析,再来看这篇文章就比较简单了, 本文主要讲解 Executors 这个工具类,看看长江创建线程池的几种方法。 newFixedThreadPool 生成一个固定大小的线程池: 1 …
java多线程之线程锁
MyThread.java: 1 class MyThread implements Runnable { 2 int i = 1; 3 4 public void run() { 5 // 线程锁,一个线程执行本处代码…
Java多线程5:synchronized锁方法块
synchronized同步代码块 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用synchroniz…
在Java中如何避免死锁?
面试过程中偶尔会有面试官会问到死锁的问题,那么我们通常了解一个东西是怎么了解的呢,比如死锁,什么叫死锁,什么情况下会发生死锁,死锁怎么解决,或者怎么避免死锁,这就是我们学习一个东西去掌握时需要考虑的。 学到多线程的时候,…
java两种经典死锁例子,Lock发生死锁案列
第一种synchronized方式死锁: 线程thread1先获取锁locka,然后在同步块里嵌套竞争锁lockb。而线程thread2先获取锁lockb,然后在同步块里嵌套竞争锁locka (此时已经被线程thread…
03.JUC 锁 - LockSupport
基本概念 LockSupport 可以用来实现线程的阻塞/唤醒。 每个使用 LockSupport 的线程都会与一个许可关联: 若该许可有效,则线程可以继续执行。 若该许可无效,则线程进入阻塞,等待许可证生效后再继续执行…
Java多线程 -- JUC包源码分析11 -- CyclicBarrier源码分析
在前面的篇章中,讲解了ReentrantLock + Condition,并讲述了2者结合的一个典型应用:ArrayBlockingQueue/LinkedBlockingQueue。 今天讲述2者结合的另一个典型应用:…
java 面试题总结01
我这里总结这些天面试Java开发过程中的大多数问题,综合分类有Java基础,框架,多线程,网络通信,Linux,数据库,设计模式,算法,缓存等几个模块,由于问题太多,下面先列出问题,之后有时间在写文章解答,或者网上有很多…
java.util.concurrent.Exchanger应用范例与原理浅析--转载
一、简介 Exchanger是自jdk1.5起开始提供的工具套件,一般用于两个工作线程之间交换数据。在本文中我将采取由浅入深的方式来介绍分析这个工具类。首先我们来看看官方的api文档中的叙述: A…