java多线程
文章平均质量分 88
java多线程编程时的同步和互斥,如何更高效的进行多线程编程
xingjiarong
本科生,IT男,单身狗,喜欢足球
展开
-
java多线程(一)Race Condition现象及产生的原因
转载请注明出处http://blog.csdn.net/xingjiarong/article/details/47603813 什么是Race Condition首先,什么是Race Condition呢,Race Condition中文翻译是竞争条件,是指多个进程或者线程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关的现象。换句话说,就是线程或进程之间访问数据的先后顺序决定了数据修改原创 2016-01-28 16:11:44 · 18048 阅读 · 7 评论 -
java多线程(九)阻塞队列
前边的博客中我们介绍了如果用对象锁和条件锁以及更加方便的synchronized关键字来实现多线程的同步和互斥,也许你会觉得使用synchronized关键字已经非常方便了,但是使用者必须真正的理解synchronized的用法,而且要有一定的多线程的编程的经验,否则很难做到全面的考虑问题而造成意想不到的问题。其实在java中还有比原创 2015-08-28 08:30:16 · 2503 阅读 · 0 评论 -
java多线程(七)提高锁的效率——使用读写锁
之前我们讲过ReentrantLock,这种锁不区分读操作和写操作,如果有一个线程在执行读操作,那么其他的所有的线程不能进行任何的读操作或者写操作。这样可以保证程序的互斥性,但是降低了程序的并发性,使执行效率降低,没有有效的发挥多线程的优势。比如说,有一个系统,主要是以读操作为主,比如有10个线程负责读数据,只有一个线程负责写数据。如果用我们之前的ReentrantLock方法,这10个线程中没有原创 2015-08-27 09:10:20 · 5157 阅读 · 2 评论 -
java多线程(八)为什么弃用stop和suspend
初始的java版本中定义了一个stop方法来终止一个线程还定义了一个suspend方法来阻塞一个线程,直到另一个线程调用resume方法。这两个方法在Java SE 1.2之后就被弃用了,因为这两种方法都不安全,下面我们分别来讨论一下为什么不安全和应该怎样做才是安全的。一、stop方法为什么不安全其实stop方法天生就不安全,因为它在终止一个线程时会强制中断线程的执行,不管原创 2015-08-27 09:12:23 · 13867 阅读 · 2 评论 -
java多线程(六)深入理解volitale关键字
我们继续来讨论java的多线程编程,今天我们一起来学习一下java多线程中的另一个关键字——volitale。一、java内存模型与多线程编程中的三个感念1、原子性原子性是指一些操作或者全都执行,要么或者全都不执行,整个操作作为一个整体是不可分割的,例如,一个银行中有两个账户A,B,现在要从A账户中转账500元到B账户,那么一共可以分为两个步骤: 1、从A账户取出500元:A = A原创 2015-08-26 09:12:19 · 7863 阅读 · 7 评论 -
java多线程(五)synchronized关键字修饰代码块
在上一篇博客中我们介绍了原创 2015-08-26 09:11:11 · 7119 阅读 · 2 评论 -
java多线程(四)synchronized关键字修饰方法
在之前的博客中我们介绍了条件对象和锁对象,两者结合使用才能起到比较好的互斥与同步效果,大家可能觉得有些麻烦,有没有将两者结合起来的工具呢,有!java提供了synchronized关键字来实现线程的互斥和同步,其达到的效果相当于条件对象和锁对象结合起来的效果。synchronized关键字有两类用法,一类是修饰方法,一类是修饰代码块,这篇博客主要介绍一下synchronized关键字修饰方法时的用原创 2015-08-24 08:49:30 · 14287 阅读 · 3 评论 -
java多线程(二)锁对象
在上一篇博客中,我们讨论了Race Condition现象以及它产生的原因,现在我们知道它是不好的一种现象了,那么我们有什么方法避免它呢。最直接有效的方式就是放弃多线程,直接改为使用单线程但操作数据,但是这是不优雅的,因为我们知道有时候,多线程有它自己的优势。在这里我们讨论两种其他的方法——锁对象和条件对象。锁对象java SE5.0之后为实现多线程的互斥引入了ReentrantLock类原创 2015-08-17 08:24:53 · 3000 阅读 · 1 评论 -
java 多线程(三)条件对象
在上一篇博客中,我们学会了用ReentrantLock来控制线程访问同一个数据,防止出现Race Condition。这一次呢,我们继续深入的学习,学习一下java中的条件对象,条件对象在多线程同步中用到的比较多。首先,我们来介绍一下临界区。临界区:在同步的程序设计中,临界区指的是一个访问共用资源的程序片段,而这些共用资源又具有无法同时被多个线程访问的特性。 当有线程进入临界区时,其他线程或是进程必原创 2015-08-19 08:19:37 · 4032 阅读 · 15 评论