Java并发编程实践 目录 并发编程 01—— ThreadLocal 并发编程 02—— ConcurrentHashMap 并发编程 03—— 阻塞队列和生产者-消费者模式 并发编程 04—— 闭锁CountDownLatch 与 栅栏CyclicBarrier 并发编程 05—— Callable和Future 并发编程 06—— CompletionService : Executor 和 BlockingQueue 并发编程 07—— 任务取消 并发编程 08—— 任务取消 之 中断…
前言 由于AQS的源码太过凝练,而且有很多分支比如取消排队.等待条件等,如果把所有的分支在一篇文章的写完可能会看懵,所以这篇文章主要是从正常流程先走一遍,重点不在取消排队等分支,之后会专门写一篇取消排队和等待条件的分支逻辑.读源码千万别在每个代码分支中来回游走,先按一个正常的分支把流程看明白,之后再去重点关注其他分支,各个击破.我相信看完正常流程,你再去分析其他分支会更加得心应手.本篇将主要方法名都做了目录索引,查看时可通过目录快速跳到指定方法的逻辑. 执行流程 AQS的执行流程大体为当线程获取…
JUC并发编程学习笔记 狂神JUC并发编程 总的来说还可以,学到一些新知识,但很多是学过的了,深入的部分不多. 线程与进程 进程:一个程序,程序的集合,比如一个音乐播发器,QQ程序等.一个进程往往包含多个线程,且至少包含一个线程. 线程:进程中的实际运作单位. Java默认有几个线程? 2个,main和GC Java创建线程的方式? 3种,继承Thread,实现Runnable,实现Callable. Java真的可以开启线程么? Java不能自己开启线程,而是通过调用本地方法,调用C++代码开…
目录 ThreadLocal是啥?用来干啥? ThreadLocal的简单使用 ThreadLocal的实现思路? ThreadLocal常见方法源码分析 ThreadLocal.set(T value) ThreadLocal.get() ThreadLocal.remove() ThreadLocalMap源码分析 ThreadLocalMap结构分析 ThreadLocalMap的Hash算法 ThreadLocalMap.set() ThreadLocalMap.resize()扩容 T…
Java并发编程:深入剖析ThreadLocal   Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理.首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景. 以下是本文目录大纲: 一.对ThreadLocal的理解 二.深入解析ThreadLocal类 三.ThreadLocal的应用场景…
本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. 并发编程系列博客传送门 引子 public class InheritableThreadLocalDemo { private static ThreadLocal<String> threadLocal = new ThreadLocal<>(); public static void main(String[] args) { threadLocal.set…
JUC并发实战 Synchonized与Lock 区别 Synchronized是Java的关键字,由JVM层面实现的,Lock是一个接口,有实现类,由JDK实现. Synchronized无法获取锁的状态,Lock可以判断是否获取到了锁. Synchronized自动释放锁,lock一般在finally中手动释放,如果不释放锁,会死锁. Synchronized 线程1(获得锁,阻塞),线程2(等待,傻傻的等): lock锁不一定会等待下去(lock.tryLock()) Synchroniz…
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10739579.html,希望大家多多支持!!! 一.线程基础 1.线程与进程 线程是指进程中的一个执行流程,一个进程中可以运行多个线程. 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,即进程空间或(虚空间),比如一个qq.exe就是一个进程. 2.线程的特点 线程共享分配给该进程的所有资源 线程之间实际上轮换执行(也就是线程切换) 一个程序至少有一个进程,一个进程…
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/9663167.html c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码 c++ 网络编程(二)TCP/IP linux 下多进程socket通信 多个客户端与单个服务端交互代码实现回声服务器 c++ 网络编程(三)TCP/IP LINUX/windows 进程间的通信原理与实现代码 基于多进程的服务端实现 c++ 网络编程(四…
什么是ThreadLocal ThreadLocal有点类似于Map类型的数据变量.ThreadLocal类型的变量每个线程都有自己的一个副本,某个线程对这个变量的修改不会影响其他线程副本的值.需要注意的是一个ThreadLocal变量,其中只能set一个值. ThreadLocal<String> localName = new ThreadLocal(); localName.set("name1"); String name = localName.get(); 在线…