多线程
不一样的烟火OO
做一个有点用的人
展开
-
《JAVA并发编程实践》第五章基础构建模块
1.什么是同步容器类?同步容器有 vector,hashtable等,他们的实现方式是:封装类的状态,对每个公有方法都使用同步,使得每次只有一个线程能访问容器的状态。对于同步容器每个方法来说,它是线程安全的但是在客户端代码中,一些复合操作仍然会出现并发性问题。常见的复合操作: 迭代 跳转 条件运算 若没有则添加解决方法: 在客户端对容器加锁。带来的...原创 2018-04-08 00:01:02 · 144 阅读 · 0 评论 -
《JAVA并发编程实践》第六章任务执行第七章取消与关闭
任务任务执行: 任务通常是一些抽象而离散的工作单元,通过把应用程序的工作分解到多个任务中,可以简化程序的组织结构,提供一种自然的事务边界来优化错误恢复过程,以及提供一个自然的并行结构来提升并发性。如何设计: 找出清晰的任务边界,各个任务之间相互独立,不依赖于其他任务的状态,结果或边界效应。自然的任务边界选择方式: 以独立的客户请求为边界。项目中每次客户发起的一...原创 2018-04-09 00:53:47 · 155 阅读 · 0 评论 -
《JAVA并发编程实践》第二章 线程安全性
1.多线程环境为什么会出现问题? 由于竞态条件的存在。 竞态条件:基于一种可能失效的观察结果来做出判断或执行某个计算 竞态条件分两种: - **先检查后执行** - **读取-修改-写入** 场景: 单例模式-懒加载 计...原创 2018-04-02 01:34:20 · 177 阅读 · 0 评论 -
《JAVA并发编程实践》第三章对象的共享
1 怎么理解发布和逸出? 转自别人的回答讲的很详细 点击这里 还有这里2.如何构造一个安全的对象?不可变的对象一定是线程安全的 在多线程访问这个不可变的对象时,对象的实例域都是固定不变的,也就不存在多线程环境写操作带来的失效数据的问题。什么样的对象才是不可变的? 对象创建后其状态就不能修改 对象所有的域都是final类型 ...原创 2018-04-04 00:50:53 · 142 阅读 · 0 评论 -
《JAVA并发编程实践》第四章对象的组合
1.如何写出一个线程安全的类?基本要素: 找出构成对象状态的所有变量 找出约束状态变量的不变性条件(取值范围 前验条件或者后验条件) 建立对象状态的并发管理策略实际中的代码订单类包含自身的状态和商品的引用public class Order(){ private Integer status; private Product product;...原创 2018-04-05 11:45:46 · 130 阅读 · 0 评论 -
并发编程 基础篇
参考 : <<Java 并发编程的艺术>> -方腾飞 魏鹏 程晓明无论是单机还是分布式环境,多线程无处不在, 如果用人来比作线程的话,一个公司不可能只有一个人,一个团队不可能只有一个人 1.那么多线程一定是快的吗? 为什么会有这个疑问? 难道多个人一起来做某件事情效率还比不上一个人吗? 我们来看 cpu对于多线程的处理机制:cpu通过时间分片法来循环执行任...原创 2018-06-08 00:52:48 · 210 阅读 · 0 评论 -
各种锁的对比总结
多线程并发编程中最常用的就是synchronized和volatile两个关键字。volatile通常被描述成一个轻量级锁。 用于声明需要在多线程环境中共享的对象。 只能在类实例对象上声明。 功能: 保证当前对象对其它线程可见 禁止代码的重排序重排序 :代码中上下两段代码不存在依赖关系时,jvm会对代码进行优化排序,排序后的顺序不一定是代码的顺序但是...原创 2019-11-27 11:00:11 · 556 阅读 · 0 评论