Category Archives: Thread

多线程问题

多线程性能问题 线程调度 锁竟争、IO读写等 线程协作 避免数据错乱(禁止编译器和CPU的重排序优化)同步数据(工作内存flush到主存,再refresh到其它线程工作内存) 线程池优点 创建线程开销 系统开销(任务比较简单的话,有可能使创建和销毁用资源比线程执行本身更大)、占用一定内存等资源,上下文切换,稳定性,垃圾回收压力 线程池好处 队列 阻塞队列 BlockingQueue 通常使用RenntrantLock以及它的Condition来实现 阻塞方法: 抛出异常方法: 返回结果,不抛出异常 非阻塞队列 ConcurrentLinkedQueue 内部使用CAS非阻塞算法+重试实现———->不需要阻塞,并且并发不是特别剧烈的场景 原子类 Atomic+基本类型 AtomicInteger AtomicLong AtomicBoolean AtomicArray+基础类型 AtomicIntegerArray AtomicLongArray AtomicReferenceArray Atomic+?+Reference AtomicReference AtomicStampedReference:添加了时间戳,解决了ABA问题 AtomicMarkableReference:多了一个绑定的Boolen值,可用于表示此对象已删除的场景 Atoimc+?+FieldUpdater AtomicIntegerFieldUpdater AtomicLongFieldUpdater AtomicReferenceFieldUpdater

Posted in Thread | Leave a comment