抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

多线程学习笔记

什么是线程

线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务

什么是线程安全和线程不安全

线程安全是针对多线程来讲的,如果所使用的公用变量在多线程下没有被保护机制时,变量结果会和理论值不一致,这样就叫作线程不安全,相反公用变量在保护机制下工作,就不会出现“随机”变化,这时叫线程安全。
线程安全: 在多线程中使用时,不用自已做同步处理.
线程不安全: 在多线程中使用时, 必须做线程同步,不然会有未知后果.

什么是自旋锁

是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判
断锁是否能够被成功获取,直到获取到锁才会退出循环。
获取锁的线程一直处于活跃状态,占用cpu时间,但是没有执行任何有效的任务,使用这种锁会造成busy-waiting。

什么是Java内存模型

Java内存模型即Java Memory Model (JMM),JMM定义了Java虚拟机在计算机内存中的工作方式,JVM是整个计算机的虚拟模型,所以JMM是隶属于JVM的。

什么是CAS

CAS算法 即compare and swap(比较与交换),是一种有名的无锁算法。无锁编程,即不使用锁的情况下实现多线程之间的变量同步,也就是在没有线程被阻塞的情况下实现变量的同步,所以也叫非阻塞同步(Non-blocking Synchronization)。CAS算法涉及到三个操作数:

  • 需要读写的内存值 V
  • 进行比较的值 A
  • 拟写入的新值 B
  • 当且仅当 V 的值等于 A时,CAS通过原子方式用新值B来更新V的值,否则不会执行任何操作(比较和替换是一个原子操作)

评论