![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
CrankZ
这个作者很懒,什么都没留下…
展开
-
源码分析:线程池ThreadPoolExecutor与Executors
先介绍单线程怎么实现,然后有什么问题介绍简单线程池实现,然后说不推荐使用这种方式引出Executors,有五种方式,介绍常用四种方式原创 2018-05-29 19:51:17 · 560 阅读 · 1 评论 -
Java多线程:synchronized关键字
Synchronized的作用Synchronized的作用主要有三个:原子性:确保线程互斥的访问同步代码; 可见性:保证共享变量的修改能够及时可见,其实是通过Java内存模型中的 “对一个变量unlock操作之前,必须要同步到主内存中;如果对一个变量进行lock操作,则将会清空工作内存中此变量的值,在执行引擎使用此变量前,需要重新从主内存中load操作或assign操作初始化变量值” ...原创 2018-07-20 22:36:29 · 268 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
概述在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。CountDownLatch上图TA刚开始被阻塞,三个线程T1,T2,T3每次调用countDown()方法cnt就减1,等到cnt=0时,TA才开始执行。正如Java文档所描述的那...原创 2018-11-06 10:03:52 · 369 阅读 · 0 评论 -
Java多线程学习笔记:ReentrantLock,Condition,ReentrantReadWriteLock
ReentrantLockReentrantLock和synchronized关键字一样可以用来实现线程之间的同步互斥,但是在功能是比synchronized关键字更强大而且更灵活。ReentrantLock 整体结构如下图:常用接口分析构造器ReentrantLock()创建一个 ReentrantLock的实例。 ReentrantLock(boolean fai...原创 2018-11-07 11:48:31 · 370 阅读 · 0 评论 -
Java多线程学习笔记:Callable、Future、FutureTask
概述创建线程的三种方式:继承Thread,重写run方法 实现Runnable接口,重新run方法 实现Callable接口,重写call方法前两种方式,一种是直接继承Thread,另外一种就是实现Runnable接口,这两种方式都是Java第一版就有的方法。 这两种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信...原创 2018-11-08 10:14:32 · 372 阅读 · 0 评论