美文网首页
多线程知识点更新

多线程知识点更新

作者: 没睡醒的鱼 | 来源:发表于2018-05-09 11:29 被阅读5次

控制线程间的执行顺序

CyclicBarrier类
Thread.join()方法

控制线程间的同步执行,将交替执行的线程变成顺序执行的,在B线程前调用A线程的join函数,意为在A执行完后执行B线程
方法:

  • t.join():调用线程t在此之前执行完成
  • t.join(millseconds):等待t线程执行,等待时间为millseconds毫秒
CountDownLatch类

计数器的功能,例如在A线程执行前需要执行4个线程,可利用此计数器在4个线程执行完成后再执行A线程

java内存模型

从抽象的角度看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存,每个线程都有私有的本地内存,本地内存中存储了共享变量的副本

线程之间的通信方式
  • 共享内存
  • void notify() 唤醒在此对象监视器上等待的单个线程。
    void notifyAll() 唤醒在此对象监视器上等待的所有线程。
    void wait() 导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法。
    void wait(long timeout) 导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法,或者超过指定的时间量。
    void wait(long timeout, int nanos) 导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。
Volatile+缓存一致性解释

当一个变量被volatile修饰时:

  • 当某个线程对该变量进行修改之后,就立即将修改后的值刷回主存,保证主存中永远都是最新的值
  • volatile对该变量施加了缓存一致性协议,也就是说当前线程对该变量进行修改后,系统会通知其他线程它们工作缓存中的数据已经失效。当其他线程再次读取该变量时,就会从主存中读取该变量然后复制一份到自己的工作缓存中
  • volatile保证了可见性但是不保证原子性
CAS操作

CAS有三个操作数,内存值V,旧的预期值A,要更改的新值B,当且仅当旧的预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做
CAS的问题:

  • ABA问题:ABA问题是指在CAS操作的时候,其他线程将变量的值A改成了B之后又改回了A,本线程使用期望值A与当前变量进行比较的时候发现变量没有变,实际上该值已经被其他线程改变了。
    解决方法:每次变量更新的时候,把变量的版本号加一,从而能够解决ABA问题
  • 循环时间长开销大:自旋CAS如果长时间不成功,将给CPU带来非常大的开销
  • 只能保证一个共享变量的原子操作

相关文章

  • 多线程知识点更新

    控制线程间的执行顺序 CyclicBarrier类 让一组线程等待至某种状态后全部执行关于CyclicBarrie...

  • iOS知识体系总结-多线程

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-多线程 iOS知识点/操作系统 #iOS...

  • java并发原子类AtomicBoolean解析

    如果看过我之前的文章都知道这几天一直在更新java多线程这块的知识点,因为这块的知识点确实是比较多而且也别繁杂,因...

  • 2018-04-09 为面试做的一些准备

    在往后一个月,陆续更新以下内容,以支撑面试 知识点: 一、 java基础 多线程 IO、NIO JVM 二、 算...

  • 第35节:Java面向对象中的多线程

    Java面向对象中的多线程 多线程 在Java面向对象中的多线程中,要理解多线程的知识点,首先要掌握什么是进程,什...

  • iOS多线程必备知识点-持续更新

    NSThread 1、线程创建方法: 2、线程退出方法: 也可通过停止runloop来退出线程,具体操作参考下面的...

  • OC--各种线程锁

    参考:正确使用多线程同步锁@synchronized()iOS中的锁iOS多线程安全详解iOS 常见知识点(三):...

  • python多线程的使用

    python多线程的使用 后续还会更新其他方法实现的多线程。 Queue实现多线程 通过队列实现多线程 启动一定数...

  • Java_多线程

    1.知识点: 1.介绍多线程2.线程安全 2.知识点的运用: 1.多线程的作用: 发挥多核CPU的优势,充分利用C...

  • AQS简简单单过一遍

    前言 回顾前面: 多线程三分钟就可以入个门了! Thread源码剖析 多线程基础必要知识点!看了学习多线程事半功倍...

网友评论

      本文标题:多线程知识点更新

      本文链接:https://www.haomeiwen.com/subject/cijfkftx.html