
java并发
文章平均质量分 95
codershamo
这个作者很懒,什么都没留下…
展开
-
Thread线程中start()和run()方法的区别
start()和run()区别start():用来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行操作的, 这里方法run()称为线程体, 它包含了要执行的这个线程的内容, run方法运行结束, 此线程终止, 而CPU再运行其它线程,start()不能被重复调用。 run(): run()就和普通的成员方法一样,可以被重复调用。单独原创 2016-07-12 10:01:47 · 3809 阅读 · 0 评论 -
AbstractQueuedSynchronizer框架
常开发中,大多数程序员并不会直接接触AbstractQueuedSynchronizer(AQS)类,但其在并发工具中缺无处不在,并作为内部的标准同步器,如ReentrantLock,Semaphore,Java线程池中的Worker等。本文将介绍AQS相关的实现细节。什么是AbstractQueuedSynchronizer(AQS)AQS负责管理同步器类中的状态,它管理了一转载 2016-07-25 22:00:37 · 594 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask原理解析
返回结果的任务Callable与FutureExecutor框架使用Runnable作为其基本的任务表示形式。Runnable是一种有很大局限的抽象,它不能返回一个值或抛出一个受检查的异常。Runnable接口:public interface Runnable { public abstract void run();}由于run()方法返回值为void类型,所以在执行完任务之后无法返回原创 2016-07-13 20:00:41 · 20956 阅读 · 3 评论 -
Java并发编程:Executor框架
Executor接口在Java类库中,任务执行的主要抽象不是Thread,而是Executor,接口声明:public interface Executor { void execute(Runnable command);}虽然Executor是个简单的接口,但它却为灵活且强大的异步任务执行框架提供了基础,该框架能支持多种不同类型的任务执行策略。它提供了一种标准的方法将任务的提交过程与执原创 2016-07-13 13:43:38 · 715 阅读 · 0 评论 -
浅谈Java并发编程系列(七) ——— 深入解析synchronized关键字
Synchronized关键字synchronized的锁机制的主要优势是Java语言内置的锁机制,因此,JVM可以自由的优化而不影响已存在的代码。任何对象都拥有对象头这一数据结构来支持锁,但是对于较大的对象系统开销会更大一些。java中的每一个对象都至少包含2个字(2*4 Bytes for 32bits & 2*8 Bytes for 64bits, 不包括已压缩的对象)。第一个字被称为Mark原创 2016-07-30 11:54:29 · 2199 阅读 · 0 评论