随笔分类 -  并发编程

摘要:JMM与问题引入 为啥先说JMM,因为CAS的实现类中维护的变量都被volatile修饰, 这个volatile 是遵循JMM规范(不是百分百遵循,下文会说)实现的保证多线程并发访问某个变量实现线程安全的手段 一连串的知识点慢慢缕 首先说什么是JMM, JMM就是大家所说的java的内存模型, 它是 阅读全文
posted @ 2019-11-26 23:08 赐我白日梦 阅读(601) 评论(0) 推荐(1) 编辑
摘要:本篇博文,将整理关于 单例模式 (就是让一个类从始至终,只能产生一个对象,而且spring管理的类也全部是单例模式的)与 多线程 摩擦出的火花 1 . 懒汉模式(存在线程安全性问题) 懒汉模式 在使用的时候初始化对象 2 . 饿汉模式(简单粗暴,实现线程安全) 静态域 饿汉模式 在类加载的时候初始化 阅读全文
posted @ 2019-07-08 12:05 赐我白日梦 阅读(219) 评论(0) 推荐(0) 编辑
摘要:定时/计算在java中主要使用的是Timer对象, 他的内部依然是采用多线程方式进行处理 它有四个构造方法 方法名 | 作用 | Timer() | 空参 Timer(String name) | 指定名字 Timer(boolean isDaemon) | 指定为守护线程 Timer(String 阅读全文
posted @ 2019-07-08 12:04 赐我白日梦 阅读(432) 评论(0) 推荐(0) 编辑
摘要:JDK5提供原子类,及其操作 AtomicXXX是通过CAS , Unsafe.compareAndSwapInt实现的 简单分析一下原子类是如果使用cas,无锁却保证线程安全的 每条线程都有自己的本地缓存,他们要想操作变量,首先是把变量复制到自己的缓存中,然后处理数据,数据处理结束后,将自己缓存的 阅读全文
posted @ 2019-07-08 12:03 赐我白日梦 阅读(345) 评论(0) 推荐(0) 编辑
摘要:前面我们可以使用synchronized关键字来实现线程之间的同步互斥, lock接口同样也是在JDK1.5中提出 ,同样是解决线程安全性问题的另一种解决方案,而且它更强大,更灵活本片博客介绍对其展开介绍; <! more Lock接口有如下几个实现类: ReentrantLock JDK实现的锁 阅读全文
posted @ 2019-07-08 12:02 赐我白日梦 阅读(246) 评论(0) 推荐(0) 编辑
摘要:一 . 简介AQS AQS简介 在同步组件的实现中,AQS是核心部分,同步组件的实现者,通过使用AQS提供的 模板方法 实现同步组件语义<! more AQS实现了 对同步状态的管理 以及 阻塞线程进行排队 , 等待通知 等等一系列底层的实现处理 AQS核心: 使用Node实现同步队列,底层是个双向 阅读全文
posted @ 2019-07-08 12:01 赐我白日梦 阅读(327) 评论(0) 推荐(0) 编辑
摘要:同步容器(使用的是synchronized,并且不一定是百分百安全) 本篇续 线程之间的通信 ,介绍java提供的并发集合,既然正确的使用wait和notify比较困难,java平台为我们提供了更高级的并发容器来替代 Vector&ArrayList Vector虽然它的set和get方法都被Syn 阅读全文
posted @ 2019-07-08 12:00 赐我白日梦 阅读(502) 评论(0) 推荐(0) 编辑
摘要:线程池 线程池的优势 1:降低资源的消耗,通过重复利用已经创建的线程,降低线程的创建和销毁造成的资源的消耗 2:提高响应速度,当任务到达时,任务可以不需要去等待线程的创建就可以执行 3:提高线程的可管理,线程是稀缺资源,如果无限制的创建,会消耗系统的资源,降低系统的稳定性,但是使用线程池,可以进行统 阅读全文
posted @ 2019-07-08 11:59 赐我白日梦 阅读(307) 评论(0) 推荐(0) 编辑
摘要:一. 等待通知机制的实现 方法名 | 作用 | wait() | 执行当前代码的线程等待 wait(long timeout) | timeout时间内若没有其他线程唤醒,也会醒过来 wait(long timeout, int nanos) | 超出timeout和额外的时间nanos,没有被其他 阅读全文
posted @ 2019-07-08 11:58 赐我白日梦 阅读(346) 评论(0) 推荐(0) 编辑
摘要:synchronized(JVM实现的锁) 通过这两个关键字,我们可以很容易的实现同步多个任务的行为,可以实现同一时刻,只能有一条线程去访问共享资源 一: 修饰普通方法 多个线程,共同去竞争访问, 方法内部的变量 ,永远是线程安全的!!! 多个线程,共同去竞争访问 对象中的实例变量 ,可能导致非线程 阅读全文
posted @ 2019-07-08 11:56 赐我白日梦 阅读(500) 评论(0) 推荐(0) 编辑
摘要:前言 线程驱动任务 ,而我们需要的就是一种任务的描述,而这个描述由Runable接口来提供,想定义任务,只需要实现Runable接口并重写里面的run()就好 Thread的构造方法 方法名 | 描述 | Thread() | 创建新线程对象 Thread(String name) | 创建新线程对 阅读全文
posted @ 2019-07-08 11:53 赐我白日梦 阅读(475) 评论(0) 推荐(1) 编辑
摘要:拉呱:这是第一篇并发的博客,在后续的并发博文中,我会尽力整理出较全的关于并发的知识点,先却分开两个概念, 并发与高并发 <! more 就是多线程操作相同资源时如何保证数据安全,线程安全以及合理利用资源.和它仅一字只差的是 高并发 ,高并发是指 服务能够处理很多请求,比如12306的抢票,处理不好, 阅读全文
posted @ 2019-07-08 11:50 赐我白日梦 阅读(326) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩