Java Multithreading
文章平均质量分 73
sean-zou
这个作者很懒,什么都没留下…
展开
-
Java线程创建方式
1,继承自Thread类public class Thread1 extends Thread{ @Override public void run() { System.out.println(this.getName()); } public static void main(String[] args) { Thread1 t = new Thread1(); t...原创 2012-11-19 17:34:27 · 925 阅读 · 0 评论 -
java.lang.Thread.sleep()方法和java.lang.Object.wait()方法之间的区别
调用sleep()方法后进入休眠状态的线程并不会释放其持有的对象锁;当线程调用对象的wait()方法后,线程将进入等待状态并释放其持有的该对象上的锁(线程仍然持有其它对象的锁)原创 2014-09-09 15:54:29 · 20913 阅读 · 0 评论 -
多线程4:内置锁的重入性
当某个线程请求一个由其它线程持有的锁时,发出请求的线程会进入阻塞状态由于内置锁是可重入的,因此如果某个线程试图获取一个已经由它自己持有的锁,这个请求可以成功原创 2013-04-12 16:06:37 · 1015 阅读 · 0 评论 -
多线程3:Java内置锁与synchronized关键字
Java提供了一种内置的锁机制来支持原子性每一个Java对象都可以用作一个实现同步的锁,称为内置锁,线程进入同步代码块之前自动获取到锁,代码块执行完成正常退出或代码块中抛出异常退出时会释放掉锁内置锁为互斥锁,即线程A获取到锁后,线程B阻塞直到线程A释放锁,线程B才能获取到同一个锁内置锁使用synchronized关键字实现原创 2012-11-30 13:30:16 · 8267 阅读 · 3 评论 -
同步工具类一:闭锁(java.util.concurrent.CountDownLatch)
一,让所有线程同时启动原创 2014-07-02 09:17:38 · 6266 阅读 · 2 评论 -
同步工具类三:计数信号量(java.util.concurrent.Semaphore)
计数信号量用来控制同时访问某个特定资源的操作数或同时执行某个指定操作的数量A counting semaphore.Conceptually, a semaphore maintains a set of permits. Each acquire blocks if necessary until a permit is available, and then takes it. Each ...原创 2014-07-08 13:15:32 · 5223 阅读 · 2 评论 -
同步工具类二:可取消异步计算(java.util.concurrent.FutureTask)
FutureTask可处于等待执行、正在执行和执行完成这3原创 2014-07-07 10:18:37 · 12696 阅读 · 0 评论 -
Java结果缓存实现(Thread Safe)
使用FutureTask实现:原创 2014-07-10 15:19:13 · 4462 阅读 · 0 评论 -
多线程2:Java原子变量(java.util.concurrent.atomic.*)
一个没有并发控制的计数器:public class Counter implements Runnable { private static int count; public void run() { System.out.println(Thread.currentThread().getName() + ":" + (++count)); } public...原创 2012-11-20 16:07:32 · 4835 阅读 · 1 评论 -
多线程5:对象的发布与逸出(线程安全性)
一,发布:使对象能够在当前作用域之外的代码中使用二,逸出:当某个不该被发布的对象被发布时,这种情况称为逸出 发布内部状态将会破坏封装性,并使得程序难以维持不变性条件无论其他的线程会对已发布的引用执行何种操作,都不重要,因为误用该引用的风险始终是客观存在的。变相说明了使用封装的必要性:使对程序的正确性分析变为可能,并使无意中破坏设计约束条件变得更难 1,将一该对象的引用保原创 2013-04-15 17:27:33 · 3691 阅读 · 1 评论 -
深入浅出 Java Concurrency
http://www.blogjava.net/xylz/archive/2010/07/08/325587.html个人感觉讲的非常不错,收藏一下 jmm的理解对于java多线程中的很多问题的理解有非常大的帮助,推荐讲解jmm的一个系列文章http://www.infoq.com/cn/articles/java-memory-model-1转载 2012-12-07 14:54:32 · 2282 阅读 · 0 评论 -
多线程1:竞态条件
竞态条件(Race Condition):计算的正确性取决于多个线程的交替执行时序时,就会发生竞态条件。最常见的竞态条件为:一,先检测后执行。执行依赖于检测的结果,而检测结果依赖于多个线程的执行时序,而多个线程的执行时序通常情况下是不固定不可判断的,从而导致执行结果出现各种问题。对于main线程,如果文件a不存在,则创建文件a,但是在判断文件a不存在之后,Task线程创建了文件a,原创 2012-11-20 10:19:37 · 12827 阅读 · 6 评论 -
多线程6:线程封闭与ThreadLocal
当访问共享可变数据时,通常需要使用同步,同步是需要消耗性能的。一种避免使用同步的方式就是不共享数据。如果数据都被封闭在各自的线程之中,就不需要同步。这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。1,Ad-hoc线程封闭维护线程封闭性的职责完全由程序实现来承担,是非常脆弱的,因为没有任何一种语言特性,比如可见性修饰符或者局部变量,可以将对象封闭至目标线程上。2,原创 2013-04-22 14:43:22 · 1255 阅读 · 0 评论 -
Java volatile关键字
Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种不适合使用 volatile 变量的情形。锁提供了两种主要特性:互斥转载 2013-04-16 11:34:39 · 997 阅读 · 0 评论