随笔分类 - Java concurrency
摘要:## synchronized自从Java提供了多线程编程,我们经常需要处理这样的情况:在特定的时间,我们需要限制访问,确保只有一个线程访问我们的代码。Java提供了同步关键字synchronized来实现这种访问控制,但是使用synchronized会存在一些问题。第一个问题是,当我们需要调用线程...
阅读全文
摘要:..................2015年的第一天...................本文代码托管在 https://github.com/hupengcool/disruptor-starter## Intruduction关于吹牛逼的话就不说了。。。Disruptor是Java实现的用于线...
阅读全文
摘要:最近在学习了下Google的Guava包,发现这真是一个好东西啊。。由于平时也会写一些基于多线程的东西,所以特意了解了下这个Service框架。这里Guava包里的Service接口用于封装一个服务对象的运行状态、包括start和stop等方法。例如web服务器,RPC服务器、计时器等可以实现这个接...
阅读全文
摘要:ListenableFuture的说明 并发编程是一个难题,但是一个强大而简单的抽象可以显著的简化并发的编写。出于这样的考虑,Guava 定义了 ListenableFuture接口并继承了JDK concurrent包下的Future 接口,ListenableFuture允许你注册回调方法(c...
阅读全文
摘要:Executor框架使用Runnable 作为其基本的任务表示形式。Runnable是一种有局限性的抽象,然后可以写入日志,或者共享的数据结构,但是他不能返回一个值。 许多任务实际上都是存在延迟计算的:执行数据库查询,从网络上获取资源,或者某个复杂耗时的计算。对于这种任务,Callable是一...
阅读全文
摘要:首先是synchronized 关键字他可以用于声明方法,也可以用于申明代码块。我们看看三个例子:public class SynchronizedDemo1 { public synchronized static void foo1() { } ...
阅读全文
摘要:现在是多核的时代,面向多核的编程很重要,因此基于java的并发和多线程开发非常重要。 线程池是于队列密切相关的,其中队列保存了所有等待执行的任务。工作者线程的任务很简单:从队列中获取一个任务,执行任务,然后返回线程池,等待下一个任务。 在线程池中执行任务,比为每一个任务分配一个线程优势更多:...
阅读全文