摘要:1.使用场景 多线程访问同一个共享变量的时候容易出现并发问题,特别是多个线程对一个变量进行写入的时候,为了保证线程安全,一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法,当我们在创
阅读全文
摘要:压测代码: @SpringBootTest @Slf4j public class FastBootApplicationTest { /** * 并发数量 */ public static final int THREAD_NUM=14000;private static final String
阅读全文
摘要:作用:同时允许存在指定的数量,类似组锁 常用场景:1.停车场一共有3个停车位,来了100辆车,这时,一次最多允许停3辆。 2.系统最大能抗300个并发,只是后就最多设置信号量的值为300,保证服务不崩,能正常用。 import java.util.concurrent.ExecutorService
阅读全文
摘要:作用:执行第一个参数指定的次数之后,最后一个线程执行第二个参数中的任务。 应用场景:在微服务中调用五个接口,确保5个接口执行完毕,再执行自己的业务逻辑。 import java.util.Random; import java.util.concurrent.CyclicBarrier; impor
阅读全文
摘要:作用:直译:倒数的门闩,倒数指定的次数,await才继续往下执行。 import java.util.Random; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; im
阅读全文
摘要:一、七大核心参数 1.corePoolSize 核心线程数 2.maximumPoolSize 最大线程池参数 3.keepAliveTime 任务结束后,线程存活此处指定时间后才会被释放 4.TimeUnit 上一个参数的单位,常用s,ms 5.BlockingQueue 队列,当核心线程用完时,
阅读全文
摘要:一、线程是不是越多越好? 造卡车(线程)要不要时间? 一次性使用,用完了得销毁,销毁要不要耗时间?➢ 1、线程在java中是一 个对象, 每一个java线程都需要一 个操作系统线程支持。线程创建、销毁需要时间。 如果创建时间+销毁时间>执行任务时间就很不合算。➢ 2、java对象占用堆内存,操作系统
阅读全文