多线程-同步
yyhwyd
这个作者很懒,什么都没留下…
展开
-
Lock使用
Lock是java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,可以支持多个相关的 Condition对象。使用最多的Lock类是ReentrantLock、ReentrantReadWriteLock.ReadLock、ReentrantReadWriteL...原创 2014-05-21 10:26:18 · 126 阅读 · 0 评论 -
Executor框架
Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Executor,Executors,ExecutorService,CompletionService,Future,Callable等。框架结构图如下: 使用Executor来执行多个线程的好处是用来避免线程的创建和销毁的开销,以提升效率。因...2014-06-10 14:29:48 · 96 阅读 · 0 评论 -
并发集合和阻塞队列
一、阻塞队列BlockingQueue BlockingQueue 是线程安全的java阻塞队列,主要应用于生产者消费者模式、消息传递、并行任务执行和相关并发设计的大多数常见使用上下文。 BlockingQueue 可以是限定容量的。它在任意给定时间都可以有一个 remainingCapacity,超出此容量,便无法无阻塞地 put 附加元素。没有任何内部容量约束的...2014-06-11 18:06:58 · 213 阅读 · 0 评论 -
Atomic
Atomic是指不能分割成若干部分的意思。如果一段代码被认为是 Atomic,则表示这段代码在执行过程中,是不能被中断的。通常来说,原子指令由硬件提供,供软件来实现原子方法(某个线程进入该方法后,就不会被中 断,直到其执行完成). Atomic的原理是:CAS(比较并交换)。现在大多数的处理器都提供对并发 访问的支持,这个支持的反映方式就是提供硬件的指令支持多处...2014-06-12 16:54:08 · 151 阅读 · 0 评论 -
synchronized用法
synchronized关键字用于解决线程同步,其可以用于方法和代码段,锁定的都是对象,范围是实例对象或类对象。每个对象有且只有一个锁与之相关。 锁提供了两种主要特性:互斥(原子性)(mutual exclusion) 和可见性(visibility)。互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线...2014-04-15 17:52:54 · 73 阅读 · 0 评论 -
ThreadLocal使用
ThreadLocal提供了线程局部 (thread-local) 变量,访问某个变量(通过其 get 或 set 方法)的每个线程都有自己的局部变量(变量值的副本),它独立于变量的初始化副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。ThreadLocal 实例通常是类中的 private static 字段,每个...2014-04-17 15:58:43 · 99 阅读 · 0 评论 -
wait, notify使用
在Java多线程编程中,wait()、notify()、notifyAll()这三个方法,都是Java语言提供的实现线程间阻塞(Blocking)和控制进程内调度(inter-process communication)的底层机制。Java内任何对象都能成为锁(Lock),同时任何对象也都能成为条件队列(Condition queue)。而这个对象里的wait(), notify(...2014-04-21 16:59:13 · 107 阅读 · 0 评论 -
volatile关键字使用
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。Volatile 变量具有 synchronized 的可见性特性,但是不具备原子特性,这就是说线程能够自动发现 v...2014-04-22 12:17:27 · 73 阅读 · 0 评论