Sun

数字人生


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

12构建自定义的同步工具

发表于 2020-09-09 | 分类于 java并发编程 | 阅读次数:
构建自定义的同步工具状态依赖性的类,操作有基于状态的前提条件: 如FutureTask,获取一个任务结果前提条件是任务状态为“任务已完成”; 如BlockingQueue,从队列中删除元素前提条件是队列状态为“非空”。 如ReentrantLock,获取锁成功的前提条件是锁的状态为“可获取”。 ...
阅读全文 »

11显示锁

发表于 2020-09-04 | 分类于 java并发编程 | 阅读次数:
显示锁显示锁可以代替 synchronized 吗? 只有当 synchronized 不适用时,如中断,非块结构加锁,是可以代替的一种高级锁。 Lock 和 ReentrantLockLock 定义了显示锁的方法属性: 12345678910public interfece Lock{ ...
阅读全文 »

09性能和可伸缩性

发表于 2020-08-28 | 分类于 java并发编程 | 阅读次数:
性能和可伸缩性使用线程的目的之一是为了提升性能,但与此同时可能也带来其他问题(安全性,活跃性,额外的开销),不论如何,首先要保证程序能正常的运行,其后在确定使用一个“更好”的方案前,不要主观猜测,最好是用数据证实其“更好”。 对性能的思考提升性能意味着什么? 用更少的资源做更多的事 资源:CPU周期 ...
阅读全文 »

08避免活跃性危险

发表于 2020-08-26 | 分类于 java并发编程 | 阅读次数:
避免活跃性危险锁是一把双刃剑,通过加锁来保证线程安全,但过度使用,则会导致死锁。 死锁在线程A持有锁L并想获得锁M的同时,线程B持有锁M并尝试获得锁L,线程AB均不会释放自己的锁,那么这两个线程将永远地等待下去 在数据库系统的设中考虑了检测死锁以及从死锁中恢复。JVM没有办法解决死锁,只能在编程和测 ...
阅读全文 »

07线程池的使用

发表于 2020-08-25 | 分类于 java并发编程 | 阅读次数:
线程池的使用任务提交和执行策略之前的隐性耦合线程池中任务提交需要指定执行策略的场景(隐性耦合): 依赖性任务:有依赖就会出现环,耦合①执行策略不得不顺序执行;当线程池不够大,可能出现依赖一个等待中的任务,耦合②线程池大小足够大 使用线程封闭的任务:在单线程的Executor中执行,任务可以不是线程 ...
阅读全文 »

06取消和关闭

发表于 2020-08-22 | 分类于 java并发编程 | 阅读次数:
取消和关闭为什么良好的处理取消和关闭很重要? 感觉苹果就是取消机制做的好,所以用起来很舒服 任务取消取消的含义? 在任务正常完成之前停止 何时会触发“取消”? 用户请求取消 一定时间内未完成则取消 应用程序事件:多任务搜索,其中一个搜索成功,其余的任务就取消 错误:多任务爬虫,磁盘满了,所有任务取 ...
阅读全文 »

05任务执行

发表于 2020-08-12 | 分类于 java并发编程 | 阅读次数:
任务执行“任务执行”的意义? 简化程序的组织结构 提供一种自然的事物边界来优化错误恢复过程 提供一种自然的并行结构来提升并发性 在线程中执行任务如何找出清晰的任务边界? 理想情况下,任务并不依赖其它任务的状态、结果和边界效应 串行的执行任务串行执行的问题? 性能差,在等待IO时,CPU空闲 响应 ...
阅读全文 »

04基础构建模块

发表于 2020-08-10 | 分类于 java并发编程 | 阅读次数:
基础构建模块同步容器类实现方式 : 将他们的状态封装起来,并对每个公有方法都进行同步, 使得每次只有一个线程可以访问. 同步容器类的问题 客户端在使用同步容器类时,无法保证绝对的线程安全,对复合操作要进行加锁 线程间串行执行,并发性差 迭代器与 ConcurrentModificationEx ...
阅读全文 »

03对象的组合

发表于 2020-08-08 | 分类于 java并发编程 | 阅读次数:
对象的组合如何才能设计一个线程安全的类? 找出构成对象状态的所有变量。 要创建一个线程安全的类,首先要明白哪些状态是需要同步的,就是要先收集同步需求。例如:当类中的一个变量的int值是10,每次加一,那么下一次只能是11。当下一个状态需要依赖当前状态时,这个操作必须是一个复合操作。该操作必须是一个 ...
阅读全文 »

02对象的共享

发表于 2020-08-04 | 分类于 java并发编程 | 阅读次数:
对象的共享最低安全性? 可能会读到一个错误的值,但至少是前一个线程设置的,而不是随机值。 非 volatile 的 long和double的特殊性: 无法保证最低安全性 可见性问题: synchronized 和 volatile 的区别? volatile本质是在告诉jvm当前变量在寄存器(工作 ...
阅读全文 »
12…9
Sun

Sun

Lv.0

88 日志
13 分类
52 标签
GitHub
© 2020 Sun
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4