摘要: 基本概念: Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是 Runnable 不会返回结果,并且无法抛出经过检查的异常。 Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 阅读全文
posted @ 2016-04-20 22:00 空心菜小手 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 基本概念 ThreadLocal提供了线程局部 (thread local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量,它独立于变量的初始化副本。ThreadLocal 实例通常是类中的 private static 字段 阅读全文
posted @ 2016-04-20 21:20 空心菜小手 阅读(147) 评论(0) 推荐(1) 编辑
摘要: 一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。 例如 阅读全文
posted @ 2016-04-20 21:18 空心菜小手 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者 消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就 阅读全文
posted @ 2016-04-20 10:56 空心菜小手 阅读(7285) 评论(0) 推荐(1) 编辑
摘要: 原子性就是指该操作是不可再分的。 java.util.concurrent.atomic中有一组使用无锁算法实现的原子操作类。AtomicInteger、AtomicBoolean、AtomicLong 外还有 AtomicReference 。它们分别封装了对整数、整数数组、长整型、长整型数组和普 阅读全文
posted @ 2016-04-20 09:55 空心菜小手 阅读(7133) 评论(0) 推荐(0) 编辑
摘要: Volatile关键字最大的特点是,在多线程中保持变量的可见性。这个可见性主要是指变量在主存中的可见性。因此,有必要了解java内存模型。 java内存模型 java中每个线程有一块工作内存区,存放着被所有线程共享的主内存中的变量的值的拷贝。一个线程可以执行的操作有:使用(use)、赋值(assig 阅读全文
posted @ 2016-04-20 08:53 空心菜小手 阅读(314) 评论(0) 推荐(0) 编辑