java并发编程
奋斗小菠萝
深入一些,原来更美好
展开
-
【java并发编程】-01-线程生命周期
线程的状态 NEW 初始状态 RUNNABLE 运行状态 BLOCKED 阻塞状态 线程阻塞于锁 WAITING 等待状态 TIME_WATING 超时等待状态 TERMINATED 终止状态 线程的创建 父线程分配空间创建子线程,子线程继承父线程的相关属性参数,初始化线程对象在堆内存中等待运行。 当线程初始化后,调用start()方法启动线...原创 2019-08-10 23:07:00 · 77 阅读 · 0 评论 -
【java并发编程】-02-java锁
Lock API lock() 阻塞式获取锁,获取到锁后方法返回 lockInterruptible() 响应中断获取锁,在获取锁期间可响应线程中断 tryLock() 非阻塞获取锁,调用该方法立刻返回,能够获取到锁则返回true,否则返回false tryLock(long time,TimeUnit unit) 超时时间内获取到锁,否则超时后返回false,或者...原创 2019-08-11 21:10:23 · 107 阅读 · 0 评论 -
【java并发编程】-04-并发工具和线程池
CountDownLatch 允许一个或多个线程等待其他线程完成操作。 接收一个int参数作为计数器,调用countDown方法,计数器减1。await方法在计数器为0时,线程终止阻塞。 CyclicBarrier 当所有线程都到达屏障时,被屏障的所有线程才会继续运行。 Semaphore 信号量,用来控制同时访问特定资源的线程数量。 构造函数接收int数量信号量个数。 ...原创 2019-08-25 13:59:10 · 114 阅读 · 0 评论 -
【java并发编程】-03-并发容器
ConcurrentHashMap 实现原理 HashMap在多线程并发put时,会导致Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next的节点就永远不会为空,就会产生死循环获取Entry。 锁分段:将数据分成一段一段,每一段数据分配一把锁,当一个线程占用锁访问其中一个段数据的生时候,其他段的数据也能被其他线程访问。 ConcurrentHashMap包含一个Seg...原创 2019-08-18 12:54:28 · 111 阅读 · 0 评论