随笔分类 -  高并发与多线程

摘要:设计思路:保证每个线程中共享资源的独立性 ExecutionTask QueryFromDBAction业务逻辑执行者1 QueryFromHttpAction业务逻辑执行者2 Context共享资源 测试 使用ThreadLocal来实现线程上下文设计模式,实现线程之间的隔离 ExecutionT 阅读全文
posted @ 2020-01-06 13:25 龙宇在天 阅读(461) 评论(0) 推荐(0)
摘要:The Thread-Specific Storage 线程保险箱 官方解释 This class provides thread-local variables. These variables differ from their normal counterparts in that each 阅读全文
posted @ 2020-01-05 22:27 龙宇在天 阅读(866) 评论(0) 推荐(0)
摘要:场景:A:正在厨房炒菜B:您的快递到了,请接收A:等我把这盘菜炒好再接收,请稍等 请求类 请求队列 客户端 服务端 测试类 注意:在有wait(),sleep(),while时打断线程要注意特殊处理 阅读全文
posted @ 2020-01-03 08:31 龙宇在天 阅读(256) 评论(0) 推荐(0)
摘要:Future设计模式核心思想是实现业务逻辑从串行化执行到异步和异步回调 示例一: 测试结果:必须等待 result 获取到才执行 I am done. 优化一:实际的业务被提前调用执行,当我们需要的时候再主动通过 get() 获取返回的数据 Future接口 FutureTask接口 FutureS 阅读全文
posted @ 2020-01-03 08:31 龙宇在天 阅读(567) 评论(0) 推荐(0)
摘要:immutable特点: 1.不可变对象一定是线程安全的(里面的任何属性或者引用类型的属性一旦被初始化,都不能被修改)2.可变对象不一定是不安全的 StringBuffer 题外话: J2EE中servlet 全局只创建一个对象,不是线程安全的struts 1.x Action也不是线程安全的,只创 阅读全文
posted @ 2019-12-31 11:34 龙宇在天 阅读(347) 评论(0) 推荐(0)
摘要:一、concern conflict(同时发生以下两种操作是否会发生数据冲突) 1.read read false 可以并行化2.write read true 需要串行化3.read write true 需要串行化4.write write true 需要串行化 二、多线程读写锁分离 读写锁 共 阅读全文
posted @ 2019-12-30 17:33 龙宇在天 阅读(354) 评论(0) 推荐(0)
摘要:门 过门人 测试代码 测试结果:不是线程安全的,当pass()上加synchronized时线程安全 但是将数据的读写都加在一个锁里面,极大影响程序执行效率,怎样优化? 阅读全文
posted @ 2019-12-29 20:59 龙宇在天 阅读(208) 评论(0) 推荐(0)
摘要:ObservableRunnable LifeCycleListener ThreadLifeCycleObserver 测试代码: 阅读全文
posted @ 2019-12-27 15:19 龙宇在天 阅读(272) 评论(0) 推荐(0)
摘要:被观察者(事件源) 观察者抽象类 观察者1-二进制观察者 观察者2-八进制观察者 测试类 阅读全文
posted @ 2019-12-27 15:18 龙宇在天 阅读(220) 评论(0) 推荐(0)
摘要:一个简单的java内存模型图: 从图中可以看出,当是多核cpu时,每个cpu都有一个独立的高速缓存,多个线程会在多个cpu中独立执行当对一个变量只是读操作的时候,jvm自作多情的做了一个优化,只是访问缓存的数据,只有进行写操作的时候,会刷新主内存的数据执行如下操作:i=1;i=i+1;cpu1:ma 阅读全文
posted @ 2019-12-26 10:13 龙宇在天 阅读(383) 评论(0) 推荐(0)
摘要:闲话少叙,上代码 测试结果,出现两种情况: 1.INIT_VALUE被volatile关键字修饰时,READER线程是可以感知到UPDATER的变化 2.INIT_VALUE缺少volatile关键字修饰时,READER线程感知不到UPDATER的变化 volatile可以保证内存可见性,有序性,不 阅读全文
posted @ 2019-12-26 09:01 龙宇在天 阅读(992) 评论(0) 推荐(0)
摘要:代码演示 测试一:验证线程从wait set中被唤醒的顺序不一定是FIFO 测试二:验证线程被唤醒后,必须重新去获取锁,会记录之前wait的位置,在wait的位置继续往下执行 注意:线程不能进行自我唤醒,必须由其它线程唤醒 阅读全文
posted @ 2019-12-25 17:33 龙宇在天 阅读(1463) 评论(0) 推荐(0)
摘要:饿汉式 缺点:不能进行懒加载,可能会造成资源浪费 懒汉式 缺点:不能保证线程绝对安全,尤其是new SingletonObject1()中加载比较重的v资源时 介绍三种比较优雅的v单例模式: 1.双重检查改良版 缺点:虽然解决了线程安全问题,但是jvm的一些底层优化操作被摒弃 2.holder方式 阅读全文
posted @ 2019-12-25 16:02 龙宇在天 阅读(224) 评论(0) 推荐(0)
摘要:给线程池增加自动扩充线程数量,以及闲时自动回收的功能 阅读全文
posted @ 2019-12-24 13:13 龙宇在天 阅读(716) 评论(0) 推荐(0)
摘要:给线程池增加拒绝策略和停止方法 阅读全文
posted @ 2019-12-24 11:16 龙宇在天 阅读(636) 评论(0) 推荐(0)
摘要:该线程池只创建了默认的线程数量,不包含拒绝策略,线程池的打断、销毁和自动扩展线程数量,只保持了线程的最低性能,只是极简版,之后的文章会慢慢扩展 可参考文章: https://blog.csdn.net/const_/article/details/89317907 阅读全文
posted @ 2019-12-23 17:44 龙宇在天 阅读(517) 评论(0) 推荐(0)
摘要:线程池概念 简单理解,它就是一个管理线程的池子。 它帮我们管理线程,避免增加创建线程和销毁线程的资源损耗。因为线程其实也是一个对象,创建一个对象,需要经过类加载过程,销毁一个对象,需要走GC垃圾回收流程,都是需要资源开销的。 提高响应速度。 如果任务到达了,相对于从线程池拿线程,重新去创建一条线程执 阅读全文
posted @ 2019-12-23 14:20 龙宇在天 阅读(200) 评论(0) 推荐(0)
摘要:官方解释 A thread group represents a set of threads. In addition, a thread group can also include other thread groups. The thread groups form a tree in wh 阅读全文
posted @ 2019-12-22 22:04 龙宇在天 阅读(187) 评论(0) 推荐(0)
摘要:使用了setUncaughtExceptionHandler后会把异常处理交给setUncaughtExceptionHandler,线程里面的异常不再输出日志信息 阅读全文
posted @ 2019-12-20 09:39 龙宇在天 阅读(1340) 评论(0) 推荐(0)
摘要:Test1 Test2 测试类 阅读全文
posted @ 2019-12-20 09:39 龙宇在天 阅读(268) 评论(0) 推荐(0)

//右侧添加目录 //增加页面点击显示24字社会主义核心价值观