上一页 1 ··· 7 8 9 10 11 12 13 14 下一页

2018年10月19日

并行算法

摘要: 并发算法虽然可以充分的发挥多核CPU的性能。但不幸的是,并非所有的计算都可以改造成并发的形式。简单来说,执行过程中有数据相关性的运算都是无法完美并行化的。 假如现在有两个数C和B,如果我们要计算(B+C)*B/2,那么这个运行过程就是无法并行的。原因是,如果B+C没有执行完成,则永远都算不出(B+C 阅读全文

posted @ 2018-10-19 15:08 AoTuDeMan 阅读(359) 评论(0) 推荐(0) 编辑

Future模式

摘要: Future模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。当我们需要调用一个方法时,如果这个方法执行得很慢,那么我们就要进行等待;但是有时候,我们可能并不急着要结果。因此,我们可以让被调用者立即返回,让它在后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务,在真正需要 阅读全文

posted @ 2018-10-19 10:53 AoTuDeMan 阅读(208) 评论(0) 推荐(0) 编辑

生产者-消费者模式

摘要: 生产者-消费者模式是一个经典的多线程设计模式,它为多线程间的协作提供了良好的解决方案。在生产者-消费者模式中,通常有两类线程,即若干个生产者线程和若干个消费者线程。生产者线程负责提交用户请求,消费者线程负责具体处理生产者提交的任务。生产者和消费者之间通过共享内存缓冲区进行通信。 生产者-消费者模式的 阅读全文

posted @ 2018-10-19 09:54 AoTuDeMan 阅读(369) 评论(0) 推荐(0) 编辑

2018年10月17日

不变模式

摘要: 在并发软件的开发过程中,同步操作是不可避免的。当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步。而同步对性能是有相当的损耗的。为了尽可能的除去这些同步操作,提高程序的并行性能,可以使用一种不可改变的对象,依靠对象的不变性,可以确保在没有同步的多线程环境中依然 阅读全文

posted @ 2018-10-17 15:50 AoTuDeMan 阅读(151) 评论(0) 推荐(0) 编辑

SynchronousQueue

摘要: 之前在文章线程池的内部实现里讲到了一种特殊的队列,就是直接提交队列SynchronousQueue。SynchronousQueue的容量为0,任何一个对SynchronousQueue的写要等待一个对SynchronousQueue的读,反之也一样。因此SynchronousQueue与其说是一个 阅读全文

posted @ 2018-10-17 10:57 AoTuDeMan 阅读(659) 评论(0) 推荐(0) 编辑

2018年10月16日

ThreadLocal

摘要: 除了控制资源的访问外,我们还可以通过增加资源来保证所有对象的线程安全。比如,让100个人填写个人信息表,如果只有一支笔,大家就得挨个填,对于管理人员来说,必须保证大家不会去哄抢仅存的一支笔,否则,谁也填不完。当然我们还可以从另外一个角度出发,就是准备100支笔,人手一支,那么所有人都可以各自为营,很 阅读全文

posted @ 2018-10-16 16:13 AoTuDeMan 阅读(191) 评论(0) 推荐(0) 编辑

2018年10月15日

锁的优化以及Java虚拟机对锁优化所做的努力

摘要: 锁的优化 在并发的程序应用中,锁的竞争必然导致程序的性能下降。为了将这种副作用降到最低,下面提出一些建议可以帮助大家写出性能更加优越的程序。 减少锁持有的时间 对于使用锁进行并发控制的应用程序而言,在锁竞争的过程中,单个线程对锁的持有时间与系统性能有着直接的关系。如果线程持有锁的时间很长,那么相对的 阅读全文

posted @ 2018-10-15 15:57 AoTuDeMan 阅读(137) 评论(0) 推荐(0) 编辑

随机数据结构:跳表(SkipList)

摘要: 在JDK的并发包中,除了常用的哈希表外,还有一种有趣的数据结构—跳表。跳表是一种可以用来快速查找的数据结构,有点类似于平衡树。它们的相同点都是可以对元素进行快速的查找。但有一个很重要的差别:对平衡树的插入和删除往往很可能导致平衡树进行一次全局的调整。而对跳表的插入和删除只需要对整个数据结构的局部进行 阅读全文

posted @ 2018-10-15 11:00 AoTuDeMan 阅读(644) 评论(0) 推荐(0) 编辑

2018年10月14日

数据共享通道:BlockingQueue

摘要: 思考这样一个问题:在多线程的开发过程中,如何进行多个线程间的数据共享呢?比如:线程A希望给线程B发一个消息,用什么样的方式告知线程B比较合适呢? 解析:一般来说,我们希望整个系统是松散耦合的。就是说我们希望线程A能够通知线程B,又希望线程A不知道线程B的存在。这样,如果将来进行重构或者升级,我们可以 阅读全文

posted @ 2018-10-14 17:14 AoTuDeMan 阅读(266) 评论(0) 推荐(0) 编辑

2018年10月12日

CopyOnWriteArrayList

摘要: CopyOnWriteArrayList 是一个线程安全,读无锁写时复制的ArrayList。 CopyOnWriteArrayList 是典型的空间换时间方式。 写时复制:当新元素添加到CopyOnWriteArrayList时,会先把原来数组的元素拷贝到新的数组中,然后在新的数组中做写操作,写操 阅读全文

posted @ 2018-10-12 16:04 AoTuDeMan 阅读(341) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 下一页

导航