多线程
文章平均质量分 52
icoder
Java C/C 互联网 电子商务 算法 计算几何 计算机图形学
展开
-
简析BlockingQueue
BlockingQueue简介 BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过高效并且线程安全的队列类,可以快速搭建高质量的多线程程序。 BlockingQueue不光实现了一个完整队列所具有的基本功能,同时在多线程环境下,还自动管理了多线程间的自动等待于唤醒功能,从而使得程序员可以忽略这些细节,关注更高级的功能。原创 2013-03-13 17:50:48 · 1139 阅读 · 0 评论 -
一种简单无锁队列的实现
Disruptor是内存无锁并发框架,基于一个环数组作为缓冲,详见Disruptor-1.0。下面是自己设计的一个简易版,目前没有发现存在冲突或错误的测试用例。大家可以一起测试下。package tianshui.lockfree.queue;import java.io.Serializable;import java.lang.reflect.Array;import原创 2013-04-09 17:33:07 · 6734 阅读 · 1 评论 -
一段阻塞队列代码的纠错与优化
下面的代码在某处发现后,立马发现存在问题。public class BlockingQ { private Object notEmpty = new Object(); private Object notFull = new Object(); private Queue linkedList = new LinkedList(); private int maxLength原创 2013-04-16 14:16:17 · 1101 阅读 · 0 评论 -
一种高并发流控程序的简单轻量实现
实现一个流控程序,控制客户端每秒调用某个远程服务不超过N次,客户端是会多线程并发调用。import java.util.Date;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;import原创 2013-04-16 16:06:04 · 6280 阅读 · 2 评论 -
一种简单线程并发控制的实现
/** * @author 天水 * @date 2013-4-12 下午05:08:49 */public class ConcurrentController implements Runnable { // 并发控制数 private int controlCount; // 并发控制超时时间 (second) private int controlTimeout; //原创 2013-04-12 18:18:08 · 1002 阅读 · 0 评论 -
无锁同步栈实现
public class ConcurrentStack { private AtomicReference> top = new AtomicReference>(); ConcurrentStack(){ } public void push(E item) { Node newHead = new Node(item)原创 2013-04-10 16:57:27 · 1775 阅读 · 0 评论 -
CAP理论十二年回顾:"规则"变了
CAP理论断言任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但是通过显式处理分区情形,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。自打引入CAP理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型数据库的依据。CAP理论主张任何基于转载 2013-04-09 10:36:51 · 1017 阅读 · 0 评论 -
线程池合理配置
合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。要想合原创 2013-04-02 14:08:57 · 894 阅读 · 0 评论 -
阻塞算法实现synchronized实现方式
public class NativeSynchronousQueue { boolean putting = false; E item = null; public synchronized E take() throws InterruptedException { while (item == null) wa原创 2013-03-20 12:54:01 · 1046 阅读 · 0 评论 -
阻塞算法Semaphore实现
public class SemaphoreSynchronousQueue { E item = null; Semaphore sync = new Semaphore(0); Semaphore send = new Semaphore(1); Semaphore recv = new Semaphore(0); public E ta原创 2013-03-20 12:55:49 · 931 阅读 · 0 评论 -
synchronized(class)、synchronized(this)与synchronized(object)
JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。synchronizedvoid f() { /* body */ }和void f(原创 2013-03-24 16:48:23 · 2816 阅读 · 0 评论