06 2021 档案
摘要:1 死锁问题 1.1 什么是死锁 线程A,占有资源A,并且等待占有资源B。 线程B,占有资源B,并且等待占有资源A。 1.2 造成死锁的原因 互斥 共享的资源,只能够被一个线程占用。 共享资源只能一对一 占有且等待 线程A,占有资源A,等待资源B时,不会释放资源A。 占着茅坑不拉屎。 不可抢占 其他
阅读全文
摘要:1 线程执行过程中的状态 new 初始化状态 runnalbe 可运行/运行状态 blocked 阻塞状态 waiting 等待状态,无时间限制 timed_waiting 超时等待,有时间限制 terminated 终止状态 1.1 各个状态介绍 1.1.1 new 初始化状态 实现Runnabl
阅读全文
摘要:1 从CopyOnWriteArrayList谈等效不可变对象在源码中的应用 CopyOnWriteArrayList的源码中应用了等效不可变对象。使得集合在遍历操作的时候,不用加锁也能保证线程安全。 1.1 CopyOnWriteArrayList Source Code public class
阅读全文
摘要:1 基于不可变模式解决并发问题 1.1 业务介绍 需求:发短信给客户 问题:短信厂商众多,需要实时择优 业务流程 定时进行短信厂商PK,最终决定一家服务商。 短信网关,通过这个被选定的服务商,发送短信。 1.2 服务商代码 public class SmsInfo{ // text url priv
阅读全文
摘要:1 实例说明:写一个不可改变类 1.1 一些类 // car location public class Location{ private double x; private double y; public Location(double x, double y){ this.x = x; th
阅读全文
摘要:1 并发问题解决的方式 无锁 局部变量 不可变对象 ThreadLocal 有锁 synchronized ReetrantLock 1.1 无锁的解决方式 1.1.1 局部变量 善用局部变量可以避免出现线程安全问题。 当每一个线程都运行同一行代码时,如果只是操作局部变量,则不可能会造成并发问题。因
阅读全文

浙公网安备 33010602011771号