
多线程和并发编程
nicewuranran
这个作者很懒,什么都没留下…
展开
-
Java多线程一:基础概念
Java多线程一:基础概念介绍由于在语言级提供了线程支持,在 Java 语言中使用多线程要远比在 C 或 C++ 中来得简单,java对线程提供了强健的支持.Java is a multi threaded programming language which means we can develop multi threaded program using Java. A multi threa原创 2016-08-08 22:24:01 · 386 阅读 · 0 评论 -
并发编程六:线程安全与共享资源
线程安全与共享资源介绍允许被多个线程同时执行的代码称作线程安全的代码。线程安全的代码不包含竞态条件。弄清楚Java线程执行时共享了哪些资源非常的重要共享资源局部变量局部变量存储在线程自己的栈中.也就是说,局部变量永远也不会被多个线程共享。所以,基础类型的局部变量是安全的.public int fun(){ int a=10; return a;}这个方法就是线程安全的局部的原创 2016-08-14 15:36:10 · 497 阅读 · 0 评论 -
并发编程五:竞态条件与临界区
并发编程:竞态条件与临界区介绍当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竟态条件发生的代码称作临界区。备注:以下这段代码就存在竞态条件,其中return ++count就是临界区。public class Obj{ private int count; public int incr() { return ++count;原创 2016-08-14 14:59:49 · 1717 阅读 · 0 评论 -
并发编程四:Synchronized关键字
并发编程之:Synchronized介绍由于Java对多线程编程的支持,因此在编写多线程代码时是会出现对资源共享导致不安全操作的. 因此Java提供了Synchronized关键字来保证同步操作,所谓同步操作指的是:同一时刻只有一个线程能够访问的操作。Java同步关键字SynchronizedJava中的同步块用synchronized标记。同步块在Java中是同步在某个对象上。 所有同步在一原创 2016-08-14 09:45:16 · 346 阅读 · 0 评论 -
并发编程三:读写锁
并发编程之读写锁介绍所谓读写锁指的是,对待读操作是一种逻辑对待写实另一种判断逻辑。读写锁的场景通常是读大于甚至远大于写的请求,此时使用读写锁就非常的合适。举例:比如数据库存有一个用户信息的表记录,如果多个线程都来读取某个用户的信息,那么我们应该是允许多个线程同时操作的, 但是当有一个用户来进行更新操作时,那么这条记录就会对其它线程不可见即对该记录上锁,直到更新线程结束才释放锁资源。这也很好理解,符原创 2016-08-13 16:13:28 · 341 阅读 · 0 评论 -
并发编程之:Java内存模型
并发编程之:Java内存模型介绍Java内存模型在分析并发问题时是非常重要的。硬件处理模型绝大多数的运算任务都不可能只靠处理器就能完成,处理器至少要与内存交互,比如读取数据、存储运算结果等。 这个I/O操作是很难消除的(无法仅靠寄存器来完成所有的运算任务)。由于计算机存储设备与处理器的运算速度存在几个数量级的差距,所以现代计算机系统都不得不一层高速缓存作为内存和处理器之间的缓冲。 将运算需要使用原创 2016-08-24 21:04:22 · 451 阅读 · 0 评论 -
并发编程:ReentranLock和Condition
并发编程:ReentranLock和Condition问题描述synchronized关键字是JVM层提供的同步机制,我们无需对其异常或它行为做处理(比如释放资源),可以说使用synchronized作同步是最简单但是同时也是比较粗粒度的。JDK1.5开始提供了更细粒度的同步控制,即提供了Lock锁机制和Condition对象,为同步做操作。ReentranLock就像增强版的Synchronize原创 2016-08-11 21:41:40 · 1308 阅读 · 0 评论 -
并发编程一:并发概念和基础
并发编程:并发概念和基础介绍当我们烧水的时候我们往往不是在旁边等着它烧开,而是在它烧开之前我们也许会做些其它的事情比如看书、看会儿电视, 一旦水烧开了我们就去处理烧开的水(比如泡茶)。这也体现出我们做事的效率,计算机也是如此。当计算机在进行磁盘IO或网络IO时,由于比较耗时,CPU此时是出于空闲状态的,这无疑是对CPU的一种浪费没有充分利用CPU资源。 所以通常都是当进行磁盘IO或网络IO等比原创 2016-08-11 21:25:09 · 2992 阅读 · 1 评论 -
Java多线程六:生产者和消费者模型(多对多)
多线程协同任务之:生产者和消费者模型介绍在上一篇中介绍了多线程的等待和唤醒机制,这一篇我们就实践一下,多个生产者和多个消费模型。假如有一个资源类Resouce,其有一个属性name属性和我们赋予的一个标识为flag属性。现在通过启动多线程,来达到一边赋值一边取值打印的效果。Resource类定义public class Resource { /** 标识位 */ private bo原创 2016-08-10 23:00:22 · 2118 阅读 · 0 评论 -
Java多线程五:生产者和消费者模型(单个对单个)
多线程协同任务之:生产者和消费者模型介绍在上一篇中介绍了多线程的等待和唤醒机制,这一篇我们就实践一下,单个生成这和单个消费模型。假如有一个资源类Resouce,其有一个属性name属性和我们赋予的一个标识为flag属性。 现在通过启动多线程(其实就是两个线程生产线程和消费线程),来达到一边赋值一边取值打印的效果。Resource类定义public class Resource { /**原创 2016-08-10 22:30:29 · 653 阅读 · 0 评论 -
并发编程之ThreadLocal
并发编程之ThreadLocal首先说明一下啊,ThreadLocal其实不应该放在并发编程系列,只是在不知道放到哪合适介绍ThreadLocal翻译为"本地线程",但是这个类的取名似乎词不达意了。也许使用ThradLocalVariable(线程本地变量)可能更合适。JDK源码描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get或set方法访问)时能原创 2016-08-18 21:50:41 · 320 阅读 · 0 评论 -
Java多线程七:线程池应用
java线程池应用概述当有多个请求到服务器需要新建线程来执行任务时,如果为每个请求都新建线程的话,那么服务器资源开销比较大, 因此使用一个容器来管理线程,当请求到来的时候就从容器中取出空闲线程来处理。线程池和数据库连接池很类似,都是为了解决频繁创建比较耗资源的对象。在执行并发任务时,我们可以把任务传递给一个线程池,来替代为每个并发执行的任务都启动一个新的线程, 只要池里有空闲的线程,任务就会分配一个原创 2016-08-15 22:41:43 · 428 阅读 · 0 评论 -
并发编程八:volatile关键字
并发编程之volatile关键字介绍使用volatile关键字修饰的变量会对所有线程具有可见性。简单理解就是每当线程要访问该变量时,首先会对该变量值同步到主存,然后再访问该变量值。如果明白java内存模型就能够更好的理解上面说的意思了。volatile常被误用当作原子操作,其实volatile最常用的是修饰标识符。使用volatile关键字必须具备以下两个条件1、运算结果不依赖变量的当前值,或者原创 2016-08-15 21:19:41 · 277 阅读 · 0 评论 -
并发编程二:普通锁
并发编程之普通锁介绍锁是一种线程同步机制,和synchronized同步代码块一样,但是锁具备一些更高级和细粒度的对同步的控制。锁和syncronized同步方法/代码块本质上市相同的,它们的目的都是为了保证共享资源被安全的访问。 锁(lock)作为用于保护临界区(critical section)的一种机制,被广泛应用在多线程程序中。无论是 Java 语言中的 synchronized 关键原创 2016-08-13 09:46:02 · 475 阅读 · 0 评论 -
Java多线程四:线程间通信/等待唤醒机制
多线程等待唤醒机制介绍线程间通信方式1、全局变量(基于内存共享)2、Message消息机制备注:基于内存共享比较容易实现如果多线程只是处理完全相同的任务时,那么事情就简单了,似乎也不需要线程之间相互协同。如果多线程处理的业务需要相互协同的话,那么线程之间就要进行协同和通信了。最典型的例子就是生产者和消费者模型。Java在Object对象中就定义了几个关于等待唤醒机制的方法1、publi原创 2016-08-10 21:45:31 · 961 阅读 · 0 评论 -
Java多线程三:Runnable接口
Java多线程Runnable接口介绍Runnable接口只定义了一个run()方法,任何实现类该接口的实例对象都应该实现run方法。Runnable从字面意思上来看,表示其具备可运行能力。The Runnable interface should be implemented by any class whose instances are intended to be executed by原创 2016-08-09 21:33:21 · 439 阅读 · 0 评论 -
Java多线程二:Thread类
Java多线程:Thread深入研究介绍Thread类由其名字可知其是一个线程类,java创建线程可以通过该类.A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running conc原创 2016-08-09 21:13:07 · 429 阅读 · 0 评论 -
并发编程七:线程通信
线程通信介绍线程间通信的目标是为了让线程能够互相知道对方的情况.线程间通信应用通过共享对象通信线程间可以通过共享对象的变量来进行互相通信,比如设置一个标识位使用boolean值表示,false/true表示一种操作。例如:public class Resource { /** 标识位 */ private boolean flag = false; /** 资源名称 */原创 2016-08-14 20:48:04 · 310 阅读 · 0 评论