多线程-同步
来源:互联网 发布:visio 数据建模 编辑:程序博客网 时间:2024/04/27 22:34
1.线程的内存
java程序在开始运行以后,java虚拟机会为所有的线程分配一个统一的内存区域(main memory:主内存)用于存储共享数据,然后之后又为每一个新创建的线程创建一个私有的内存区域(working memory ),用于存储线程私有数据。
2.我的理解,对于可引起多线程问题的共享数据,即某个类的类属性,对于方法内部的局部变量是不会引起多线程问题的。
认识几个关键字
1.synchronized:
修饰方法:代表同步使用时需要获取到当前对象的锁;
修饰static方法:代表锁定当前类的class对象;
synchronized(this):代表获取到当前对象的锁才能运行;
syncronized(非this obj):代表需要获取obj的锁才能运行;
2.volatile关键字: 实现一个共享变量在各个线程的私有内存区域可见。原理就是在每次要使用这个变量的时候都是先从共享内存里面读,然后用(直接用或者是改变它的值),然后将用完以后的值写会共享内存区域
3.原子类实现的共享数据在各内存之间的可见性,它的原理和volatile差不多。
4.当一个同步方法单独运行的时候可能就会没错,但是在同步方法之间就会出现多线程问题。最常见的就是System.out.prinln()(他就是同步方法)
同理两个原子操作直接就形成了非原子操作,也会出现多线程的问题。
0 0
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- 同步多线程
- 多线程同步
- 多线程同步
- 多线程、同步
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- 多线程同步
- HDU 5971 Wrestling Match(dfs)
- Access denied for user 'root'@'localhost' (using password: YES) 问题解决
- 04依赖注入的三种实现方式
- Android四大组件之一:Activity总结(上)
- docker安装
- 多线程-同步
- 高并发系统限流中的漏桶算法和令牌桶算法,通过流量整形和速率限制提升稳定性
- 女性架构师优先?驾驭概念的技能是最高潜力
- JavaScript学习笔记
- RecyclerView (万能的适配器和实现列表项的拖动和左右滑动)
- 谈计算机语言
- PAT(BasicLevel):数字黑洞 (20)
- Python基础知识——python中的if __name__ == "__main__"运用
- 几种常见的Shell