java并发编程

java并发编程

1、什么是高并发

  • 并发:指的是CPU同时处理多个任务,就是多个线程同时处理一个资源,单核CPU不是同时,而是通过分配时间段交替执行。
  • 高并发是一种互联网分布式架构设计,就是通过这种设计保证系统能够同时并行处理很多请求。

2、高并发常用指标

  • 响应时间:系统对请求做出响应的时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间。
  • 吞吐量:单位时间内处理的请求数量。
  • QPS:每秒响应请求数。在互联网领域,这个指标和吞吐量区分的没有这么明显。
  • 并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度上代表了系统的并发用户数。

3、互联网分布式架构设计,提高系统并发能力的方式

  • 垂直扩展:提升单击处理能力。垂直扩展的方式分为两种:
    • 增强单机硬件性能,例如:增加CPU核数如32核,升级更好的网卡如万兆,升级更好的硬盘如SSD,扩充硬盘容量如2T,扩充系统内存如128G;
    • 提升单机架构性能,例如:使用Cache来减少IO次数,使用异步来增加单服务吞吐量,使用无锁数据结构来减少响应时间。
  • 水平扩展
    • 集群
    • 分布式
    • 站点式扩展:Nginx反向代理
    • 服务层扩展:RPC框架实现远程调用,SpringBoot/SpringCloud
    • 数据层扩展

4.其它

  • sleep和wait
    • sleep是线程中的方法,但是wait是Object中的方法。
    • sleep方法不会释放lock,但是wait会释放,而且会加入到等待队列中。
      • 线程锁表示Lock对象执行了锁定操作,其他的线程都必须等这个线程完成,并释放锁之后,才能执行被锁住的代码块
    • sleep方法不依赖于同步器synchronized,但是wait需要依赖synchronized关键字。
    • sleep不需要被唤醒(休眠之后推出阻塞),但是wait需要(不指定时间需要被别人中断)。
  • synchronized和Lock的区别
    • synchronized启动上锁,自动释放锁,Lock手动上锁,手动释放锁。
    • synchronized无法判断是否获取到了锁,Lock可以判断是否拿到了锁。
    • synchronized拿不到锁就会一直等待,Lock不一定会一直等待。
    • synchronized是java关键字,Lock是接口。
    • synchronized是非公平锁,Lock可以设置是否为公平锁。

返回顶部

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值