Java并发
qqchaozai
这个作者很懒,什么都没留下…
展开
-
【Java并发】CountDownLatch+CyclicBarrier+Semaphore:样例入门篇
1 CountDownLatch倒计时门闩:[ˈkaʊntdaʊn] [lætʃ],顾名思义,门闩有多个,当门闩全部开启时,门闩数减为0,才能把门打开,在门前等待的人才能出去。来个例子:在线程池中,并发执行10个任务,主线程观察任务执行情况,并等待任务全部执行结束,输出执行结果。// 创建线程池,核心池-0,最大-10,timeout-0,队列-实时队列// 当有任务来的时候,会立...原创 2019-11-19 17:31:14 · 274 阅读 · 0 评论 -
【Java并发】java内存模型与线程
前言众所周知,计算机CPU的运算速度远超磁盘IO和网络通信IO,CPU许多时间都消耗在等待IO操作上,那么如何尽可能的让CPU完全的发挥出来呢?在高并发的场景下,又如何让多线程更快的处理每个任务,从而提高服务的TPS?1 硬件角度思考并发现象CPU进行计算任务时,往往需要和内存进行交互,比如对运算内容的读取,对运算结果的存储。但是内存的存取速度要远慢于CPU的计算速度,所以一般计算机会...原创 2019-05-31 19:46:18 · 154 阅读 · 0 评论 -
【java并发】synchronized和ReentrantLock
1 简介synchronized和ReentrantLock都是可重入锁,即单个线程中可以锁多次。2 区别ReentrantLock包含特性:等待可中断当持有锁的线程长期不释放锁,正在等待的线程可以选择放弃等待。公平锁多个线程在等待同一个锁,必须按照申请锁的顺序来依次获得锁;而非公平锁则没有限制。synchronized和ReentrantLock默认都是非公平锁,Reen...原创 2019-06-12 18:07:14 · 239 阅读 · 0 评论 -
【Java并发】线程安全与锁优化
1 线程安全个人定义:共享变量被多线程操作时,可被视作是以‘原子’形态被其他人‘可见’的‘有序’进行,且能够获取正确的操作结果,则它就是线程安全的。1.1 安全等级不可变:如final修饰变量在没有this逃逸情况下,变量本身是线程安全的,但变量内部的值还是可能被修改的 绝对线程安全:字面意思,绝对保证该变量的操作具有原子性有序性可见性 相对线程安全:对象提供的操作是安全的,但使用...原创 2019-06-19 15:03:32 · 206 阅读 · 0 评论 -
【java并发】CompletionService深度解读,并采用Runnable实现同样机制
1 例子10个任务异步并发执行,如果有任务完成,则实时获取任务结果。/** * 多任务异步并发执行,并实时获取已完成任务的结果 * * @author chaozai * @date 2019年6月21日 * */public class CompletionServiceTest { public static void main(String[] a...原创 2019-06-21 18:13:37 · 641 阅读 · 0 评论 -
【java并发】阻塞队列BlockingQueue
前言java.util.concurrent.BlockingQueue:顾名思义,它是一个并发操作队列数据线程安全(JUC)的阻塞队列。阻塞出现在多个场景下,如队列满了则插入阻塞,如果队列空了则提取阻塞,也有可能插入队列操作执行时提取操作阻塞,各个子类的实现不一样。1 BlockingQueue概览public interface BlockingQueue<E> ex...原创 2019-07-11 23:04:34 · 164 阅读 · 0 评论 -
简单入门java多线程一:源码分析Thread和Runnable
简单入门,如果要深入的话,期待之后的《多线程进阶》《安全多线程》吧。这篇文章将会从源码的角度比较清晰的展现java多线程的应用,避免一团雾水吧。begin!一、java实现多线程两种方式(1)继承threadpublic class BaseThread extends Thread{ public BaseThread(String name) { super(name)...原创 2014-10-30 10:32:51 · 9635 阅读 · 0 评论 -
简单入门java多线程二:线程状态和属性
2 java的线程状态java的Thread类中包含了一个线程状态枚举类:Statepublic enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in t...原创 2014-11-13 15:29:28 · 5928 阅读 · 0 评论 -
简单入门java多线程三:线程控制API
4 线程控制API4.1 Lock:同synchronize,用于实现同步,保证多线程有序执行ReentrantLock():创建可重入锁对象lock():获取锁对象,锁对象属于当前线程,如果被其他线程占用,则进入阻塞状态unlock():释放锁对象,如果在线程执行结束前未释放,那么锁对象将被TERMINATED线程一直占用,其他线程将永远无法获得锁,从而导致死锁。务必在final...原创 2014-12-11 10:21:51 · 11143 阅读 · 1 评论