
并发编程
RachelHwang
鹏城百晓生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA多线程问题 — 多线程优化常用手段
在正常负载情况下,为每个任务分配一个线程,能够提升串行执行条件下的性能。只要请求的到达率不超出服务器的请求处理能力,那么这种方法可以同时带来更快的响应性和更高的吞吐率。如果请求的到达速率非常高,且请求的处理过程是轻量级的,那么为每个请求创建一个新线程将消耗大量的计算资源。引发的问题线程的生命周期开销非常高消耗过多的CPU资源如果可运行的线程数量多于可用处理器的数量,那么有线程将会被闲置。大量空闲的线程会占用许多内存,给垃圾回收器带来压力,而且大量的线程在竞争CPU资源时还将产生其他性能的开销。原创 2020-09-30 21:18:05 · 2322 阅读 · 0 评论 -
JAVA多线程问题 — 资源队列AbstractQueuedSynchronizer原理解析
一、AQS使用场景上篇文章写了显式锁中,ReentrantLock 的公平锁和非公平锁中,其有以下三个内部类:static abstract class Sync extends AbstractQueuedSynchronizer {}final static class NonfairSync extends Sync { }final static class FairSync extends Sync { }内部类 Sync 继承自我们的 AQS 并重写了部分方法,NonfairSy原创 2020-09-16 15:42:12 · 331 阅读 · 0 评论 -
JAVA多线程问题 — volatile
先了解有关volatile 常考面试题:1)Java 中能创建 volatile 数组吗?答案:能,只不过只是一个指向数组的引用,而不是整个数组,如果改变了引用指向的数组,将会受到volatile的保护,但是如果多个线程同时改变数组的元素,volatile关键字就不能起到保护的作用。2)volatile 能使得一个非原子操作变成原子操作吗?答案:能,一个典型的例子是在类中有一个 long 类型的成员变量。如果你知道该成员变量会被多个线程访问,如计数器、价格等,你最好是将其设置为 volati原创 2020-07-17 02:01:12 · 581 阅读 · 0 评论 -
java並發編程(一)
加锁机制内置锁重入用锁来保护状态对于可能被多个线程同时访问的可变状态变量,(包括每个包含多个变量的不变形条件)在访问它的时候都需要持有同一个锁,称为被这个锁保护;if(!vector.containers(element)){ vector.add(element);}活跃性与性能–死锁和显示锁1.死锁定义:当一个线程永远占有一个锁, 而其他线程尝试去获得这个锁, 那么它...原创 2018-10-11 00:58:23 · 170 阅读 · 0 评论 -
線程並發:并发队列ConcurrentLinkedQueue阻塞队列LinkedBlockingQueue
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列(先进先出)。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue;LinkedBlockingQueue由于LinkedBlockingQueue实现是线程安全的,实现了先进先出等特性,...原创 2018-11-18 23:32:57 · 211 阅读 · 0 评论 -
java并发编程笔记--利用Executor代替Thread
在组建java程序时候关于任务执行方面第一个要考虑的就是任务边界的划分,即把执行的程序分成合理的任务,理想的情况是这些任务的状态,结果不会影响到其它任务。以java最擅长的服务器端开发为例子,服务器端要做到两点:高并发(good throughput)、低延迟(good responsiveness)。高并发是服务提供者的需要,我们想让我们的程序承载更多的用户来分担服务器开销;低延迟是用户的需求...原创 2018-12-11 01:04:04 · 197 阅读 · 0 评论