Java之旅--多线程进阶

微博设计框架:http://mars914.iteye.com/blog/1218492  http://timyang.net/

避免多线程时,开销分布在调度上,可以采取的策略:减少线程到合适的程度、避免线程内IO、采用合适的优先级。

关于IO和多线程,有个案例,Redis是单线程的,支持10万的QPS;MemberCache是多线程的,性能反而不如Redis;也可以佐证,对于IO非常多的操作,多线程未必能提高更好的性能,即使是内存IO。

另外,听百分点公司的讲座时,他们分享了一个案例,当计算的性能瓶颈在硬盘时,把硬盘换成SSD,可以性能翻倍,所以,应该把SSD当做是便宜的内存来使用,而不应该是当做昂贵的硬盘来使用。

在java.util.concurrent中,还提供了很多有用的线程写作类,比如:

CountDownLatch:倒计时锁、CyclicBarrier:循环栅栏、DelayQueue:延迟队列、PriorityBlockingQueue:优先级队列、ScheduledThreadPoolExecutor:定时任务、Semaphore:信号量、Exchanger:交互栅栏。

文章导航