多线程
文章平均质量分 51
小庄梦蝶
这个作者很懒,什么都没留下…
展开
-
多线程续
生产者消费者模式在java中,负债产生数据的模块是生产者,负责使用数据的模块是消费者,生产者消费者解决数据的平衡问题,即先有数据后才能使用,没有数据时,消费者需要等待public class MainBody { private ArrayList list=new ArrayList(); final int MAX=9; public synchronized void write(){ while (list.size()>=MAX){原创 2020-11-20 20:32:25 · 55 阅读 · 0 评论 -
多线程续
volatile与synchronized比较volatile关键字是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,volatile只能修饰变量,而synchronized可以修饰方法,代码块,但是它就具备可见性,不具备原子性CAS是由硬件实现的,CAS可以将read-modify-write这类操作转化为原子操作i++自增操作包括三个操作从主内存读取i变量值对i的值加1再把加1之后的值保存到主内存CAS原理在把数据更新到主内存时,再读取主内存变量的值,如原创 2020-11-13 11:36:00 · 59 阅读 · 0 评论 -
多线程续
线程同步机制简介线程同步机制是一套用于协调线程之间的数据访问的机制,该机制可以保障线程安全java平台提供的线程同步机制包括锁,volatile关键字,final关键字,static关键字,以及相关的API如Object.wait/Object.notify()等锁概念线程安全问题的产生前提是多个线程并发访问共享数据将多个线程对共享数据的并发访问转换为串行访问,即一个共享数据一次只能被一个线程访问,锁就是复用这种思路来保障线程安全的锁可以理解为对共享数据进行保护的一个许可证,对于同一个许可保护的原创 2020-11-11 09:12:38 · 89 阅读 · 0 评论 -
线程那些事续
线程安全问题非线程安全主要是指多个线程对同一个对象的实例变量进行操作时,会出现值被更改,值的不同步情况表现为三个方面:原子性,可见性,有序性原子性就是不可分割的意思,原子操作的不可分割有两层含义访问(读和写),某个共享变量的操作从其他线程来看,该操作要么已经执行完毕,要么尚未发生,即其他线程不知道当前操作的中间结果访问同一组共享变量的原子操作是不能够交错的,如现实生活从atm机取款有两种方式解决这种原子性一种趋势使用锁,另一种利用处理器的cas指令锁,具有排他性,保证共享变量某一时刻只能被一原创 2020-11-06 23:10:59 · 147 阅读 · 0 评论 -
线程笔记
关于线程的那些事什么是线程,java的代码被编译成字节码存放在内存中,它要被执行就要被cpu调用,而线程就cpu执行在内存中进程中的一条任务线,main方法本身就是一条线程,这就是为什么它能被运行,比如为什么你能边打游戏,边听队友讲话的原因,用最简洁概括就是线程是进程中能够被独立执行的子任务,或为是操作系统能够进行调度最小单位上面谈到进程,所谓进程就是程序被执行的状态就是进程,它可以包含多条并行的线程,每条线程执行不同任务,线程的种类有内核线程(内核线程是直接由内核本身启动的进程,内核就是cpu)和用原创 2020-11-05 21:37:21 · 85 阅读 · 0 评论