Java高并发的方式解决
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,
为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步
1、同步和异步的区别和联系
同步就是一件事,一件事情一件事的做。
异步就是,做一件事情,不引响做其他事情。
2、如何处理并发和同步
处理并发和同同步问题主要是通过锁机制,一种是代码层次上的,如java中的同步锁,典型的就是同步关键字synchronized,另外一种是数据库层次上的,比较典型的就是悲观锁和乐观锁。
3、常见并发同步案例分析
案例一:订票系统案例,某航班只有一张机票,假定有1w个人打开你的网站来订票,问你如何解决并发问题(可扩展到任何高并发网站要考虑的并发读写问题)
问题,1w个人来访问,票没出去前要保证大家都能看到有票,不可能一个人在看到票的时候别人就不能看了。到底谁能抢到,那得看这个人的“运气”(网络快慢等)其次考虑的问题,并发,1w个人同时点击购买,到底谁能成交?总共只有一张票。
首先我们容易想到和并发相关的几个方案 :
锁同步同步更多指的是应用程序的层面,多个线程进来,只能一个一个的访问,java中指的是syncrinized关键字。锁也有2个层面,一个是java中谈到的对象锁,用于线程同步;另外一个层面是数据库的锁;如果是分布式的系统,显然只能利用数据库端的锁来实现。假定我们采用了同步机制或者数据库物理锁机制,如何保证1w个人还能同时看到有票,显然会牺牲性能,在高并发网站中是不可取的。
4、常见的提高高并发下访问的效率的手段
首先要了解高并发的的瓶颈在哪里?
可能是服务器网络带宽不够
可能web线程连接数不够
可能数据库连接查询上不去。
根据不同的情况,解决思路也不同。
像第一种情况可以增加网络带宽,DNS域名解析分发多台服务器。
负载均衡,前置代理服务器nginx、apache等等
数据库查询优化,读写分离,分表等等
Java高并发的方式解决相关推荐
- Java高并发,如何解决,什么方式解决
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一 ...
- java高并发案例详细讲解
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了.而并发问题是绝大部分的程序员头疼的问题, 但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研 ...
- 关于高并发的一些解决办法(转载)
本文转载于博客园 魔流剑的博客 网址: https://www.cnblogs.com/lr393993507/p/5909804.html 想看原版的自行点击传送门. 对于我们开 ...
- c语言 java高并发_Java高并发解决方式 2019.docx
Java高并发解决方式 2019 目录 一.消息队列 (1)应用场景 1.1 解耦和 1.2 异步处理 1.3 流量削峰 (2)消息队列缺点 2.1 系统可用性降低 2.2 系统复杂度提高 2.3 一 ...
- java redis 并发_Redis高并发问题的解决方法
本文讲述了Redis高并发问题的解决办法.分享给大家供大家参考,具体如下: redis为什么会有高并发问题 redis的出身决定 redis是一种单线程机制的nosql数据库,基于key-value, ...
- cpu高 thread vm_阿里大佬总结,Java高并发必读!
作者:wxdoop 原文:https://blog.csdn.net/qq_36235098 来源:前程有光 前言 进程是计算机中程序关于某几何数据集合上的一次运行活动,是系统进行资源分配和调度的基本 ...
- Java高并发编程:活跃性危险
Java高并发程序中,不得不出现资源竞争以及一些其他严重的问题,比如死锁.线程饥饿.响应性问题和活锁问题.在安全性与活跃性之间通常存在依赖,我们使用加锁机制来确保线程安全,但是如果过度地使用加锁,则可 ...
- SpringBoot实现Java高并发秒杀系统之DAO层开发(一)
SpringBoot实现Java高并发秒杀系统之DAO层开发(一) 秒杀系统在如今电商项目中是很常见的,最近在学习电商项目时讲到了秒杀系统的实现,于是打算使用SpringBoot框架学习一下秒杀系统( ...
- Java高并发编程详解系列-7种单例模式
引言 在之前的文章中从技术以及源代码的层面上分析了关于Java高并发的解决方式.这篇博客主要介绍关于单例设计模式.关于单例设计模式大家应该不会陌生,作为GoF23中设计模式中最为基础的设计模式,实现起 ...
最新文章
- 最近做手机端,GPS,微信QQ分享总结的问题
- COMET | 概念学习使机器具有人的思维方式
- 三星全球首家量产18nm DRAM
- mysql syncbinlog_Mysql之sync-binlog参数
- Java双大括号_什么是Java中的双BRACE初始化?
- 【牛客 - 369A】小D的剧场(线性dp)
- 2021信服云创新峰会:托管云成上云第三种选择
- win98 老电脑 文件导出_UGNX利器:轻量化建模,很多人还傻傻的关注电脑配置
- 关于梯度下降法、牛顿法、高斯-牛顿、LM方法的总结
- 硬件工程师成长之路(2)——电路设计
- php发送邮件的方式,php 发送邮件几种方式
- 大二实训(二)问答题
- flash air java_Flash Air 打包安卓 ane
- Wifi网络共享----Wifi共享精灵
- Excel如何跳过空值自动编号呢
- 详解目标检测的评价指标
- 计算机组织与结构性能设计答案,计算机组织及结构—性能设计第八版答案-COA8e.pdf...
- oem是代工还是贴牌_OEM贴牌和ODM贴牌的区别
- Moloch安装与使用
- 【华为OD笔试真题JAVA实现】幼儿园找出同班的小朋友
热门文章
- 文言文编程可以编译成PHP吗,GitHub开源的文言文编程语言、程序生成中国山水画、格律诗编辑程序...
- 联想(逻辑)与想象——形象思维与抽象思维感想
- 阿里云中间件有哪些?这里最全面
- 人脸识别签到 电子班牌加速校园智慧化进程
- Python商业数据可视化实战
- 第18章 MetaFile
- keyshot操作记录
- bss、data和rodata区别与联系
- 计算机本科毕业论文水电厂,水电站计算机监控系统 (本科)毕业论文设计.doc...
- Codeforces 841 B Godsend