java并发中会遇到的小问题

上下午切换:
cpu在执行程序的时候,以一个时间片一个时间片切换执行不同的任务,在上一次任务结束需要进行下一个任务的时候,进行上一个任务状态的记忆,然后再加载下一个任务,这样就造成了上下午切换(就像读英文书,遇到一个不会的单词需要去查字典,在查之前我们要记住现在处在第几页的哪个地方,以至于后面能够很快的找他)
解决上下午切换的办法:
。无锁并发编程
。CAS算法
。使用最少线程或者使用协程
1.死锁
避免死锁的办法:
。避免一个线程同时获得多个锁
。避免一个线程在锁内同时获得多个资源,尽量保证一个锁只占有一个资源
。尝试使用定时锁,lock.trylock(timeout)来替换使用内部锁机制《trylocak在获得锁的情况下返回true,在锁被占用的时候立即返回false,trylock(timeout)当加上timeout的时候回在等待time时间后返回false》
。对于数据库锁,加锁,解锁必须在一个数据库连接上,否则就会出现解锁失败的情况
2.资源限制
如何解决硬件/软件的资源限制问题?
。硬件资源限制:使用集群并行执行程序,比如使用hadoop搭建服务集群,不同的机器处理不同的数据,可以通过“数据id%机器数”,计算得到一个机器编号,然后对应编号的机器处理这笔数据。
。软件限制:可以使用资源复用,比如:使用数据库连接池 socket连接池,或者在调用对方webservice时只建立一个连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值