- 博客(7)
- 资源 (23)
- 收藏
- 关注
原创 并发编程12-显示锁
内部所拥有比较好的性能,但是在灵活性方面有缺陷,并且如果申请锁失败就会陷入阻塞等待的过程中。 对于一些场景,我们可以使用显示锁Lock基本应用 Lock 的lock方法相当于进入同步块, unlock方法相当于退出同步块。支持跟内部锁同样的重入机制: public void displayLock(){ Lock lock = new ReentrantLock(
2015-02-17 13:36:25 2361
原创 并发编程11-测试并发程序
测试的两个方面: - 安全性 并发不会造成状态错误。 - 活跃度 主要是性能测试 - 吞吐量 段时间定资源内可以处理的任务数量 - 响应性 从请求到完成一些动作之前的延迟(等待执行的时间) - 可伸缩性 增加资源,提高性能
2015-02-16 15:25:10 2228
原创 并发编程10-性能和可伸缩性
性能的思考使用多线程也会引入一些性能的开销,比如线程协调,上下文切换,线程创建和消亡。 当使用过度的时候这些开销可能超过对吞吐量响应和提高计算能力带来的好处。性能与可伸缩性伸缩性指增加计算资源(cpu,内存)的时候,吞吐量或服务时间可以得以改进。
2015-02-13 13:22:30 2314
原创 并发编程9-避免活跃度危害
死锁线程等待资源,形成一个环路就会造死锁。 数据库中事务也可能造成死锁,但是事务会自动选择一个杀死,保证另外的运行,线程可没有这么自动锁顺序死锁直接上代码 这种死锁,只要保持锁的顺序就不会发生public class TestCallable { private Object left = new Object(); private Object right =
2015-02-10 11:01:40 2406
原创 并发编程8-
使用线程池并发的时候有可能出现问题线程饥饿死锁如果第一个任务依赖于第二个任务的某个状态改变,而第二个任务要等待第一个任务执行完才能执行,就会造成饥饿死锁。耗时阻塞如果任务的耗时时间不同,最后任务可能会被一些耗时大的操作所占用,造成阻塞。上面两个在足够大的线程池中都不会有问题,因此如何界定一个线程池的大小是很重要的。通常决定一个池应该是多大的条件是:稀缺资
2015-02-09 20:48:27 2174
原创 并发编程7 - 任务取消
通常如下情况会取消:1. 用户发起取消请求2. 现实的活动3. 分解任务其中一条发现了解决方案,其他的就可以取消了4. 分解任务其中一条发现了对于其他任务都有影响的错误,比如磁盘空间已满,其他的可以取消了5. 关闭, 当执行器关闭的时候,必须对正在处理及等待处理的任务进行优雅的关闭。一个最简单的方式是,加上取消标记,cancel方法设置取消标记。 主流程中判断取消
2015-02-09 11:38:52 2135
Android WiFi Monitor
2015-08-27
Android WiFi Management
2015-08-27
一个既简单的校验框架
2015-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人