- 博客(17)
- 资源 (4)
- 收藏
- 关注
原创 蓝桥B组小题一道
分糖果 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。 一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。 反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。
2014-09-21 22:25:43 793
原创 Java 并发编程之测试(二)
资源管理的测试先摆上昨天测试用的栗子import java.util.concurrent.Semaphore;public class BoundedBuffer { private final Semaphore availableItems, availableSpaces; private final E[] Items; private int putPosition
2014-09-15 17:13:24 1166 1
原创 Java 并发编程和可伸缩性(三)
避免热点域比如一个hashmap的size。优化的方法就是加一个计数器。但是对于ConcurrentHashMap来说。当并发的对其进行操作时,每次put和remove都需要改变这个计数器。所以在这个类里这个计数器就被叫做热点域,是可伸缩性的瓶颈。所以这里采取避免热点域的方法是对于应用锁分段的散列桶,ConcurrentHashMap中的size将对每个分段进行枚举并将每个分段的元素数量相加。
2014-09-13 08:23:58 1340
原创 Java 并发编程和可伸缩性(二)
阻塞非竞争的同步可以完全在JVM中处理,竞争的同步则可能需要操作系统的介入,从而增加开销。当在锁上发生竞争时,竞争失败的线程肯定会阻塞。JVM在实现阻塞行为时,可以采用自旋等待,就是通过循环不断的尝试获取锁。直到成功。或者通过操作系统挂起被阻塞的线程。这两种方式的效率高低取决于上下文切换的开销以及在成功获取锁之前需要等待的时间。如果等待时间较短,采用自旋等待的方式,如果时间较长,则采用操作系统
2014-09-10 22:08:02 835
原创 Java 并发编程之死锁
动态的锁顺序死锁 在协作对象之间发生的死锁 死锁的避免与诊断 支持定时的锁 通过线程转储信息来分析死锁 其它活跃性危险 饥饿 糟糕的响应性 活锁
2014-09-08 17:24:21 1602 2
原创 Java 并发编程之线程池的使用 (三)
线程工厂 在调用构造函数后再定制ThreadPoolExecutor 扩展ThreadPoolExecutor 递归算法的并行化
2014-09-07 22:00:44 1244
原创 Java 并发编程之任务取消(六)
关闭ExecutorServiceExecutorService提供了两种关闭方法,使用Shutdown正常关闭,以及使用ShutdownNow强行关闭。在进行强行关闭时,shutdownNow首先关闭当前正在执行的任务。然后返回所有尚未启动的任务清单 。返回未启动任务清单这句没明白返回的方式,于是去查看了一下源码 /** * Attempts to stop all
2014-09-01 00:25:49 3070
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人