java并发
文章平均质量分 67
laterxie
喜欢旅行,打羽毛球,打乒乓球,看足球,动漫.对大数据,分布式,消息中间件,高并发感兴趣
展开
-
Java线上常见问题排查方法
CPU问题cpu问题是比较常见的问题,cpu负载过高会导致系统接口卡顿,响应变慢,对于造成cpu过高的大致有以下几种情况。JVM频繁GC导致cpu高。存在死循环,导致cpu负载过高。执行其他消耗cpu多的操作,比如打印过多的debug日志,循环过多。在实际开发中,遇到比较多的是频繁gc,尤其是频繁Full GC导致cpu过高。频繁Full GC主要由以下几种情况。老年代空间不足metaspace方法区空间不足System.gc()针对cpu过高的常用排查方法由:使用arthas原创 2022-04-20 01:40:00 · 1991 阅读 · 0 评论 -
Java四种线程池的使用
Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。 n转载 2017-05-17 23:19:50 · 246 阅读 · 0 评论 -
Java中的ThreadLocal
ThreadLocal其实,它就是一个容器,用于存放线程的局部变量。为每个线程保留一份变量副本。 我们来看下面的代码: 数据库连接工具package com.xfl.concurrent;import java.sql.Connection;import java.sql.DriverManager;/** * Created by XFL * time on 2017/5/16 23:原创 2017-05-17 00:35:46 · 263 阅读 · 0 评论 -
使用FutureTask执行并行耗时任务
在实际开发中,一般任务都有串行和并行之分。比如走完A步骤之后才能在走B步骤,这个属于串行。比如登录注册操作,只有先获取验证码,然后在使用验证码登录。又比如为了获取一个商品的价格,我们可以从多个渠道获取,从不同渠道获取商品价格是属于并行任务的,多个渠道之间完全没有任何的关系。这个时候我们一般都要搜集结果。FutureTask就是非常适合这种情景的。 主要api有get,run,canc...原创 2017-11-06 00:04:07 · 2723 阅读 · 0 评论 -
使用redis 实现分布式锁
使用redis 实现分布式锁在有些需要高可用的场景中,保证并发量的情况下需要使用分布式锁来做控制,保证应用的可靠性。我们知道jdk提供了一些常用的锁比如ReentrantLock,ReentrantReadWriteLock,synchronized。对于这些锁的实现这里就不详细介绍了,在使用过程中这些锁锁的是对象,在单服务器的时候有用。但是现在基本都不是单一服务器了,一般都会有多台服务器。对原创 2018-01-14 23:59:34 · 391 阅读 · 0 评论 -
Java中CAS详解
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,但是volatil...转载 2018-03-04 22:16:08 · 205 阅读 · 0 评论