java多线程学习总结
来源:互联网 发布:数组转化为json字符串 编辑:程序博客网 时间:2024/06/05 16:29
多线程首先遇到的第一个问题是并发问题:在多线程访问共有内存数据(即类与对象所持有字段与方法,不包括非静态方法内的对象)会出现的问题。即下图红色部分。
而面对并发问题。我们通常只能使用synchronize(内置锁)或者Lock锁(显示锁),这样我们才能保证在同一个时刻同一块内存只有一个线程去操作,这样保证了数据的正确性。但是这也带来了效率低下的问题。同一时刻同一个内存区域只能由一个线程去操作。但是当对一些Integer、Boolean、Long、IntegerArray、LongArray、Reference等提供了Atomic包,即AtomicInteger等等。这样,我对这些对象进行增删减操作时就可以不用Synchronize与Lock了。Lock与Atomic所用知识点如下:
1、JDK线程池用到上面所有知识点;点击打开链接
2、AQS(AbstractQueuedSynchronizer):队列同步器。使用了一个int成员变量status来表示同步状况,是用来构建锁或者其他同步组中的基础框架。点击打开链接
3、同步队列,AQS所用;点击打开链接
4、CAS(Compare and Swap):比较并交换,通过利用底层硬件平台的特性,实现原子性操作。点击打开链接
5、Unsafe:提供了硬件级别的原子操作;点击打开链接
6、Volatile:保证变量可见性;点击打开链接
上述技术要点解决了并发编程中的原子性、可见性、有序性。
线程的休眠与唤醒机制:
阅读全文
0 0
- java多线程学习总结
- java多线程学习总结
- Java多线程学习总结
- java多线程学习总结
- java 多线程学习总结
- java多线程学习总结
- Java学习总结--多线程
- java多线程学习总结
- java多线程-学习总结
- Java多线程学习总结
- Java多线程学习总结
- java多线程学习总结
- java多线程学习总结
- Java多线程-学习总结
- java学习--java多线程总结
- java学习之--多线程总结
- java多线程学习与总结
- 【Java多线程】的学习总结
- vim开启行号显示及全局设置
- 第二次请求时没有带上session的问题
- 学习一个朱刘算法
- camera的开启
- js原生数组去重
- java多线程学习总结
- 缓存处理(三)
- org.hibernate.AnnotationException:(hibernate没有添加配置文件)
- (3)表的增删改查
- 【雪野实训记录】Oracle宾馆管理系统-L2综合项目案例
- mysql存储过程之错误处理
- log4j2.pom
- laravel笔记-模板
- CSS圣杯布局(三栏布局)