导航:首页 > 编程语言 > java并发如何处理

java并发如何处理

发布时间:2024-04-04 22:58:05

java中高访问量高并发的问题怎么解决

你指的高并发量大概有多少?

几点需要注意:

  1. 尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。

  2. 用jprofiler等工具找出性能瓶颈,减少额外的开销。

  3. 优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。

  4. 优化数据库结构,多做索引,提高查询效率。

  5. 统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。

  6. 能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。

  7. 解决以上问题后,使用服务器集群来解决单台的瓶颈问题。

基本上以上述问题解决后,达到系统最优。

至于楼上有人提到别用JAVA来做,除非是低层的连接数过大(如大量的端口占用需求),这种情况下考虑直接C来写,其他的可以用JAVA来做。

Ⅱ JAVA怎么处理线程池中线程的并发问题

可以通过以下原则解决:
1、设置线程池的最大线程数
2、设置线程池的并发处理线程数量
3、设置线程池最大的队列线程数
4、做好线程池的线程清理工作
做好这几点,理论上没问题了,具体还得看编程者代码的质量。
PS:服务器不可能为每一个请求都创建线程,得考虑到最大负载,当达到临界值的时候,服务器返回繁忙状态,拒绝服务即可,当然这是简单的处理办法。

Ⅲ 面试Java开发时问到高并发怎么处理的,还有sql优化有哪些办法,有哪位大神知道啊,新手!!

Java开发高并发的处理方法:

  1. 最基础的地方做起,优化我们写的代码,减少必要的资源浪费


    避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式。对于String连接操作,使用StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。


    避免使用错误的方式,尽量不用instanceof做条件判断。使用java中效率高的类,比如ArrayList比Vector性能好。

  2. 图片服务器分离


    对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。

  3. 缓存


    具体接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户常常访问到的数据放到内存中,甚至缓存十分大的时候我们可以把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都可以增加系统的抗压力。

  4. 分批传送

在做某项目的时候,一次传递的参数太多,而且数据库规定一次最多传递的参数最多是三万条,当时有五万条记录,那怎么传送呢?最终是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。

还有一次在考试系统中,如果那么多的考试人员同时提交到数据库中,数据库的压力增大,有时会被down掉,当时采用的方法是使用ajax异步传输,没有等待考生点击提交按钮的时候,就把考生的答案自动提交,这样也避免了突然断电考生前面做过的题出现丢失的现象。

DB优化

Ⅳ Java如何处理大量的并发请求

在web应用中,同一时间有大量的客户端请求同时发送到服务器,例如抢购、秒杀等。这个时候如何避免将大量的请求同时发送到业务系统。
第一种方法:在容器中配置最大请求数,如果大于改请求数,则客户端阻塞。该方法有效的阻止了大量的请求同时访问业务系统,但对用于不友好。
第二种方法:使用过滤器,保证一定数量的请求能够正常访问系统,多余的请求先跳转到排队页面,由排队页面定时发起请求。过滤器实现如下:
<pre name="code" class="java">public class ServiceFilter implements Filter { private static final int MAX_COUNT = 20; private int filterCount = 0; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("before"+filterCount); if(filterCount > MAX_COUNT) { //请求个数太多,跳转到排队页面 request.getRequestDispatcher("index.jsp").forward(request, response); } else { //请求个数加1 filterCount ++; chain.doFilter(request, response); //访问结束,请求个数减1 filterCount --; } }
}

Ⅳ 濡备綍澶勭悊java楂桦苟鍙戦梾棰

濡备綍澶勭悊骞跺彂鍜屽悓姝
浠婂ぉ璁茬殑濡备綍澶勭悊骞跺彂鍜屽悓钖屾ラ梾棰树富瑕佹槸阃氲繃阌佹満鍒躲

鎴戜滑闇瑕佹槑锏斤纴阌佹満鍒舵湁涓や釜灞傞溃銆

涓绉嶆槸浠g爜灞傛′笂镄勶纴濡俲ava涓镄勫悓姝ラ挛锛屽吀鍨嬬殑灏辨槸钖屾ュ叧阌瀛梥ynchronized锛岃繖閲屾垜涓嶅湪锅氲繃澶氱殑璁茶В锛

镒熷叴瓒g殑鍙浠ュ弬钥:http://www.cnblogs.com/xiohao/p/4151408.html

鍙﹀栦竴绉嶆槸鏁版嵁搴揿眰娆′笂镄勶纴姣旇缉鍏稿瀷镄勫氨鏄鎭茶傞挛鍜屼箰瑙傞挛銆傝繖閲屾垜浠閲岖偣璁茶В镄勫氨鏄鎭茶傞挛锛堜紶缁熺殑鐗╃悊阌侊级鍜屼箰瑙傞挛銆

鎭茶傞挛(Pessimistic Locking):

鎭茶傞挛锛屾e傚叾钖嶏纴瀹冩寚镄勬槸瀵规暟鎹琚澶栫晫锛埚寘𨰾链绯荤粺褰揿墠镄勫叾浠栦簨锷★纴浠ュ强𨱒ヨ嚜 澶栭儴绯荤粺镄勪簨锷″勭悊锛変慨鏀规寔淇濆畧镐佸害锛屽洜姝わ纴

鍦ㄦ暣涓鏁版嵁澶勭悊杩囩▼涓锛屽皢鏁版嵁澶勪簬阌佸畾鐘舵併

鎭茶傞挛镄勫疄鐜帮纴寰寰渚濋潬鏁版嵁搴撴彁渚涚殑阌佹満鍒讹纸涔熷彧链夋暟鎹搴揿眰鎻愪緵镄勯挛链哄埗镓嶈兘 鐪熸d缭璇佹暟鎹璁块梾镄勬帓浠栨э纴钖﹀垯锛屽嵆浣垮湪链绯荤粺

涓瀹炵幇浜嗗姞阌佹満鍒讹纴涔熸棤娉曚缭璇佸栭儴绯 缁熶笉浼氢慨鏀规暟鎹锛夈

涓涓鍏稿瀷镄勫氲禆鏁版嵁搴撶殑鎭茶傞挛璋幂敤锛

select * from account where name=钬滶rica钬 for update

杩欐浔 sql 璇鍙ラ挛瀹氢简 account 琛ㄤ腑镓链夌﹀悎妫绱㈡浔浠讹纸 name=钬滶rica钬 锛夌殑璁板綍銆

链娆′簨锷℃彁浜や箣鍓嶏纸浜嫔姟鎻愪氦镞朵细閲婃斁浜嫔姟杩囩▼涓镄勯挛锛夛纴澶栫晫镞犳硶淇鏀硅繖浜涜板綍銆
Hibernate 镄勬偛瑙傞挛锛屼篃鏄锘轰簬鏁版嵁搴撶殑阌佹満鍒跺疄鐜般
涓嬮溃镄勪唬镰佸疄鐜颁简瀵规煡璇㈣板綍镄勫姞阌侊细

String hqlStr ="from TUser as user where user.name='Erica'";

Query query = session.createQuery(hqlStr);

query.setLockMode("user",LockMode.UPGRADE); // 锷犻挛

List userList = query.list();// 镓ц屾煡璇锛岃幏鍙栨暟鎹

query.setLockMode 瀵规煡璇㈣鍙ヤ腑锛岀壒瀹氩埆钖嶆墍瀵瑰簲镄勮板綍杩涜屽姞阌侊纸鎴戜滑涓 TUser 绫绘寚瀹氢简涓涓鍒钖 钬涡ser钬 锛夛纴杩欓噷涔熷氨鏄瀵

杩斿洖镄勬墍链 user 璁板綍杩涜屽姞阌併

瑙傚疗杩愯屾湡 Hibernate 鐢熸垚镄 SQL 璇鍙ワ细
select tuser0_.id as id, tuser0_.name as name, tuser0_.group_id
as group_id, tuser0_.user_type as user_type, tuser0_.sex as sex
from t_user tuser0_ where (tuser0_.name='Erica' ) for update
杩欓噷 Hibernate 阃氲繃浣跨敤鏁版嵁搴撶殑 for update 瀛愬彞瀹炵幇浜嗘偛瑙傞挛链哄埗銆
Hibernate 镄勫姞阌佹ā寮忔湁锛
Ø LockMode.NONE 锛 镞犻挛链哄埗銆
Ø LockMode.WRITE 锛 Hibernate 鍦 Insert 鍜 Update 璁板綍镄勬椂鍊欎细镊锷ㄨ幏鍙
Ø LockMode.READ 锛 Hibernate 鍦ㄨ诲彇璁板綍镄勬椂鍊欎细镊锷ㄨ幏鍙栥
浠ヤ笂杩欎笁绉嶉挛链哄埗涓鑸鐢 Hibernate 鍐呴儴浣跨敤锛屽 Hibernate 涓轰简淇濊瘉 Update
杩囩▼涓瀵硅薄涓崭细琚澶栫晫淇鏀癸纴浼氩湪 save 鏂规硶瀹炵幇涓镊锷ㄤ负鐩镙囧硅薄锷犱笂 WRITE 阌併
Ø LockMode.UPGRADE 锛氩埄鐢ㄦ暟鎹搴撶殑 for update 瀛愬彞锷犻挛銆
Ø LockMode. UPGRADE_NOWAIT 锛 Oracle 镄勭壒瀹氩疄鐜帮纴鍒╃敤 Oracle 镄 for
update nowait 瀛愬彞瀹炵幇锷犻挛銆
涓婇溃杩欎袱绉嶉挛链哄埗鏄鎴戜滑鍦ㄥ簲鐢ㄥ眰杈冧负甯哥敤镄勶纴锷犻挛涓鑸阃氲繃浠ヤ笅鏂规硶瀹炵幇锛
Criteria.setLockMode
Query.setLockMode
Session.lock

阅读全文

与java并发如何处理相关的资料

热点内容
plc和单片机哪个好 浏览:535
帝国神话组建云服务器 浏览:827
邓散木pdf 浏览:199
方舟怎么直连服务器图片教程 浏览:563
假相pdf 浏览:336
找对象找程序员怎么找 浏览:976
怎么投诉苹果商店app 浏览:470
华为手机如何看有多少个app 浏览:734
btr如何管理别的服务器 浏览:410
spwm软件算法 浏览:184
70多岁单身程序员 浏览:221
高考考前解压拓展训练 浏览:217
用纸做解压玩具不用浇水 浏览:584
谷轮压缩机序列号 浏览:737
牛顿插值法编程 浏览:366
php多用户留言系统 浏览:731
安卓和苹果如何切换流量 浏览:703
怎么知道dns服务器是多少 浏览:976
5995用什么简便算法脱式计算 浏览:918
电脑上如何上小米云服务器地址 浏览:921