#并发压测

来,带你鸟瞰 Java 中4款常用的并发框架!

1.为什么要写这篇文章几年前NoSQL开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库。但是,当深入实现细节时,我们想起了一位智者曾经说过的话:“细节决定成败”。最终我们意识到NoSQL不是解决所有问题的银弹,而NoSQLvsRDMS的答案是:“视情况而定”。&nbs...

Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore

在java1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲:一.CountDownLatch用法二.CyclicBarrier用法三.Semaphore用法CountD...

高并发获取唯一性自增长字段

一、考虑使用synchronized同步锁对synchronized(this)的一些理解当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 当一个线程访问obje...

根据CPU核心数确定线程池并发线程数(转)

  关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下:  第一派:《JavaConcurrencyinPractice》即《java并发编程实践》,如下图:  如上图,在《JavaConcurrencyinPractice》一书中,给出了估算线程池大小的公式:Nthrea...

Java并发编程之线程池及示例

  线程池顶级接口。定义方法,voidexecute(Runnable)。方法是用于处理任务的一个服务方法。调用者提供Runnable接口的实现,线程池通过线程执行这个Runnable。服务方法无返回值的。是Runnable接口中的run方法无返回值。  常用方法-voidexecute(Runnable)作用是:启动...

并发容器(练习题)

题目:  启动若干线程,并行访问同一个容器中的数据。保证获取容器中数据时没有数据错误,且线程安全。如:售票,秒杀等业务。importjava.util.ArrayList;importjava.util.List;publicclassTest_01{staticList<String>list=newAr...
代码星球 ·2021-01-25

Java并发编程之并发容器

  解决并发情况下的容器线程安全问题的。给多线程环境准备一个线程安全的容器对象。  线程安全的容器对象:Vector,Hashtable。线程安全容器对象,都是使用synchronized方法实现的。  concurrent包中的同步容器,大多数是使用系统底层技术实现的线程安全。类似native。Java8中使用CAS...
代码星球 ·2021-01-25

Java并发编程:深入剖析ThreadLocal(转)

目录大纲:  一.对ThreadLocal的理解  二.深入解析ThreadLocal类  三.ThreadLocal的应用场景  四.ThreadLocal对象的回收  ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。ThreadLocal为变量在每个线程中都创建了一个副...

Java并发编程之同步

  synchronized锁什么?锁对象。  可能锁对象包括:this,临界资源对象,Class类对象。1.1同步方法  synchronizedTmethodName(){}  同步方法锁定的是当前对象。当多线程通过同一个对象引用多次调用当前同步方法时,需同步执行。1.2同步代码块  同步代码块的同步粒度更加细致,...
代码星球 ·2021-01-24

Java并发中的CopyOnWrite容器

  Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们...

Java多线程并发工具类

当我们创建一个可扩展大小的线程池,并且需要在线程池内同时让有限数目的线程并发运行时,就需要用到Semaphore(信号灯机制),Semaphore通常用于限制可以访问某些资源(物理或逻辑的)的线程数目,它是一个计数信号量,从概念上讲,信号量维护了一个许可集合,如有必要,在许可可用前会阻塞每一个acquire(),然后再...
代码星球 ·2021-01-23

kafka压测

kakfa因为迁移了kafka集群,为了确保新环境正常,需要来做一些压力测试。这次压力测试重点会关注一些异常情况下,kafka收发消息的状况。关于kafka集群的安装可参考上一篇文章。部分broker集群挂掉若topic创建的时候设置了replication,那么一般来说,挂掉n-1个节点都是没关系的。挂掉的broke...
代码星球 ·2021-01-23

并发用户 VS TPS

TPS模式(吞吐量模式)是一种更好的方式衡量服务端系统的能力。基本概念:并发用户数:简称VU,指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(VirutalUser),注意并发用户数跟注册用户数、在线用户数有很大差别的,并发用户数一定会对服务器产生压力的,而在线用户数只是”挂”在系统上,对服务器不...
代码星球 ·2021-01-23

GO语言并发

并发:同一时间段执行多个任务并行:同一时刻执行多个任务Go语言的并发通过goroutine实现。goroutine类似于线程,属于用户态的线程,我们可以根据需要创建成千上万个goroutine并发工作。goroutine是由Go语言的运行时调度完成,而线程是由操作系统调度完成。Go语言还提供channel在多个goro...
代码星球 ·2021-01-23

应对高并发场景的redis加锁技巧

//获取锁getLock(){   //是否有正在执行的线程   booleanhasLock=false;   try{       hasLock=redi...
首页上一页...89101112...下一页尾页