多线程学习
weixin_36115621
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
分而治之的java类ForkJoin
Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行。比如要计算一个超大数组的和,最简单的做法是用一个循环在一个线程内完成:┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─还有一种方法,可以把数组拆成两部分,分别计算,最后加起来就是最终结果,这样可以用两个线程并行执行:┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐└─原创 2020-05-17 10:24:38 · 186 阅读 · 0 评论 -
StampedLock
ReadWriteLock可以解决多线程同时读,但只有一个线程能写的问题。分析ReadWriteLock,会发现它有个潜在的问题:如果有线程正在读,写线程需要等待读线程释放锁后才能获取写锁,即读的过程中不允许写,这是一种悲观的读锁。要进一步提升并发执行效率,Java 8引入了新的读写锁:StampedLock。StampedLock和ReadWriteLock相比,改进之处在于:读的过程中也允许获取写锁后写入!这样一来,我们读的数据就可能不一致,所以,需要一点额外的代码来判断读的过程中是否有写入,这种原创 2020-05-16 20:59:48 · 117 阅读 · 0 评论 -
CyclicBarrier,CountDownLatch,Exchanger,和Semaphore
CyclicBarrierhttps://blog.youkuaiyun.com/tolcf/article/details/50925145原创 2020-05-12 19:21:09 · 120 阅读 · 0 评论 -
synchronized的学习
线程同步synchronized的4种应用方式 jvm内部实现 称为:内置锁synchronized关键字最主要有以下3种应用方式,都是作用在对象上修饰类,作用范围:synchronized括号内, 作用对象:类的所有对象;synchronized(Service.class){ }修改静态方法,作用范围:整个静态方法, 作用对象:类的所有对象;修饰方法,被修饰的同步方法,作用范围:整个方法, 作用对象:调用这个方法的对象;缺点:A线程执行一个长时间任务原创 2020-05-09 23:01:33 · 122 阅读 · 0 评论 -
JMM----(Java Memory Model)
JMM----(Java Memory Model)Java内存模型(简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。由于JVM运行程序的实体是线程,而每个线程创建时JVM都会为其创建一个工作内存(栈空间),用于存储线程私有的数据。所有原始类型(boolean,byte,short,char,int,long,float,double)的本地变量都直接保存在线程栈当中,对于它们的值各个线原创 2020-05-09 22:59:32 · 183 阅读 · 0 评论 -
Guarded Suspension(确保挂起 )
参考吴文君老师视频学习和网络上的文章总结笔记确保挂起设计模式 Guarded Suspension1.问题的引入一个线程正在做一个非常关键的任务,这时,有一个其他的线程让当前线程做其他的事情,当前线程只有完成当前的任务才能做其他的任务。2.问题的解决使用队列将其他需要工作的线程保存,然后在未来需要时,继续取队列中获取任务,然后执行。 public class Request {//定义一个请求的模板类 请求中包含一些数据,及获取请求中数据的方法 private fin原创 2020-05-08 20:23:30 · 170 阅读 · 0 评论 -
CAS(乐观锁)学习笔记
参考学习的博客:https://www.jianshu.com/p/ae25eb3cfb5dsynchronized是悲观锁,这种线程一旦得到锁,其他需要锁的线程就挂起的情况就是悲观锁。CAS操作的就是乐观锁,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。先看下面代码public class Test { private static int count = 0; public static void main(String[] args) {原创 2020-05-08 20:11:13 · 150 阅读 · 0 评论 -
多线程Count Down设计模式
观看吴文君老师学习视频的笔记,做个人学习用Count-Down设计模式其实也叫做Latch(阀门)设计模式。当若干个线程并发执行完某个特定的任务,然后等到所有的子任务都执行结束之后再统一汇总。public class CountDown { private final int total ; private int counter; public CountDown(int total) { this.total = total; } pu原创 2020-05-08 19:45:20 · 185 阅读 · 0 评论
分享