JUC
文章平均质量分 71
Java并发编程
Feathers .
这个作者很懒,什么都没留下…
展开
-
线程基础
进程和线程一个操作系统可以同时运行多个进程(Process),进程是操作系统资源分配调度的最小单位,共有以下几种特性:独立性,拥有独立资源,私有地址空间。进程间不可以直接互相访问动态性,程序是一个静态指令集合,而进程是一个在系统中活动的指令集合,具有自己的生命周期和状态并发性,多个进程可以在单个处理器上并发执行并行(parallel): 在同一时刻,有多个指令在cpu执行,多核cp...原创 2019-09-04 15:42:44 · 67 阅读 · 0 评论 -
线程同步:synchronized及其原理
线程竞争问题多个线程同时共享并操作同一个数据,就会发生线程竞争。就有可能引发线程安全问题;下面是经典的银行取钱问题:public class ThreadSafeTest { public static class People implements Runnable { private int withdrawMoney = 0; public ...原创 2019-09-06 09:41:33 · 94 阅读 · 0 评论 -
线程同步: volatile
并发可见性问题可见性:线程对主内存的修改可以及时的被其他线程观察到static boolean stop = false;new Thread(() -> { // 线程1 执行 System.out.println("线程1 is running..."); // 线程1 等待线程2将 stop状态改为true,然后停止执行 while (!stop...原创 2019-09-06 18:13:43 · 87 阅读 · 0 评论 -
锁的分类与对应的Java实现
锁的分类按照锁的不同特性进行划分,可以划分如下锁:可重入锁/不可重入锁可重入锁和不可重入锁如果线程获取了当前实例的锁(this),并进入方法A,这个线程在没有释放这把锁时,这个线程是否能再次进入方法A?可重入锁:可以再次进入,方法A递归了 (线程可以进入任何一个它已经拥有的锁所同步着的代码块。) 不可重入锁:不可再次进入,只有等待锁被释放,才能进入方法A在Java中,synchro...原创 2019-09-09 03:50:43 · 93 阅读 · 0 评论 -
JUC: AtomicXXX
使用JDK在java.util.concurrent.atomic下提供了一系列AtomicXX类型,这些类型提供了一系列原子方法,可以避免线程安全问题。下面是AtomicInteger的使用方式:AtomicInteger i = new AtomicInteger(10);i.incrementAndGet(); // 多个线程同时增加,不会造成线程安全问题原理Atomic类型皆是使...原创 2019-09-09 22:24:18 · 78 阅读 · 0 评论 -
JUC: 同步辅助类
java.util.concurrent包下,有一些关于同步的辅助工具类,比如CountDownLatch、CyclicBarrier等。CountDownLatch允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。CountDownLatch允许创建时传入一个初始值,代表门闩的数量,cdl调用await方法进行阻塞;cdl通过countDown()方法拿掉一个门闩,直到门闩...原创 2019-09-09 08:34:40 · 75 阅读 · 0 评论 -
ThreadLocal详解
ThreadLocal:线程局部变量。线程局部变量会将共享变量拷贝一份到当前线程中,保证了变量初始值的共享,线程之间变量的隔离,以及单个线程内的数据共享。使用ThreadLocal以JDBC Connection为例,每个dao都需要一个Connection对象用于进行数据库操作。因为Dao在Spring中是单例的,所以属性Connection可能会被多个线程访问,但是Connection并不...原创 2019-12-09 12:12:17 · 153 阅读 · 0 评论 -
Java 并发编程相关面试题
T1:写两个线程,针对一个List容器,线程1 添加10个元素到容器中,线程2 实现监控元素个数,当到达5个时,线程2给出提示并结束错误的示范:使用volatileimport java.util.ArrayList;import java.util.List;/** * 使用volatile. * 这是一个错误的解法,volatile只能保证基本类型和对象的引用的可见性,对象内部属...原创 2019-11-13 21:36:18 · 96 阅读 · 0 评论