
并发
少年织梦
一直在路上
展开
-
java并发编程之线程管理
1:简介在计算机领域中,我们说的并发(Concurrency)是指一系列任务的同时运行。如果一台电脑有多个处理器或者有一个多核处理器,这个同时性(Simultaneity)是真正意义的并发;但是一台电脑只有一个单核处理器,这个同时性并不是真正的并发。现代操作系统都允许多任务的并发执行。在听歌的时候,你可以同时阅读电子邮件,也可以同时阅读网页上的信息。这种并发是进程级(Process-Level原创 2016-12-14 18:44:53 · 267 阅读 · 0 评论 -
Java并发编程:Lock
转载:点击打开链接在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐转载 2017-11-16 18:04:14 · 184 阅读 · 0 评论 -
Java并发编程:synchronized
转载:点击打开链接虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的目录大纲: 一.什么时候会出现线程安全问题? 二.如何解决线程安全问题? 三.sync转载 2017-11-16 18:02:11 · 201 阅读 · 0 评论 -
Java并发编程:Thread类的使用
转载:点击打开链接Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来、以及如何在Java中怎么创建线程和进程。今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲: 一.线程的状态 二.上下文转载 2017-11-16 18:00:38 · 185 阅读 · 0 评论 -
Java多线程基础:进程和线程之由来
转载:点击打开链接Java多线程基础:进程和线程之由来 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们先来了解一下进程和线程的由来,这对后面对并发编程的理解将会有很大的帮助。转载 2017-11-16 17:59:11 · 200 阅读 · 0 评论 -
Java并发编程:如何创建线程?
转载:点击打开链接Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程转载 2017-11-16 17:57:23 · 158 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
转载:http://www.cnblogs.com/dolphin0520/p/3920385.html每日一看在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法...转载 2017-11-20 14:36:05 · 314 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
转载:http://www.cnblogs.com/dolphin0520/p/3949310.html在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使转载 2017-11-20 14:31:31 · 284 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
转载:http://www.cnblogs.com/dolphin0520/p/3920397.html 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法转载 2017-11-20 14:06:42 · 238 阅读 · 0 评论 -
Java并发编程:线程池的使用
转载:点击打开链接在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?转载 2017-11-20 11:17:34 · 242 阅读 · 0 评论 -
Java并发编程:阻塞队列
转载:点击打开链接在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前转载 2017-11-20 10:43:36 · 172 阅读 · 0 评论 -
Java并发编程:同步容器
每日一看转载:点击打开链接Java并发编程:同步容器 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 以下是本文的目录大纲: 一.为什么会出现同步容器? 二.Java中的同步容器类 三.同步容器的缺陷...转载 2017-11-19 17:13:45 · 370 阅读 · 0 评论 -
Java并发编程:深入剖析ThreadLocal
转载:点击打开链接Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲:转载 2017-11-19 15:25:54 · 183 阅读 · 0 评论 -
java并发编程之线程同步基础(一)
每日一看1.简介多个执行线程共享一个资源的情景 是最常见的并发编程常见之一 在并发应用中常常遇到这样的的场景 多个线程读或者写相同的数据 或者访问相同的文件或数据库连接。为了防止这些共享资源可能出现的错误或者数据不一致 我们必须实现一些机制来防止这些错误的发生 为了解决这些问题 人们引入了临界区 临界区是一个用以访问共享资源的代码块 这个代码块在同一个时间内只允许一个线程执行java...原创 2016-12-19 13:29:32 · 534 阅读 · 0 评论 -
java并发编程之线程同步辅助类(一)
1:简介上一篇博客讲到同步和临界区 主要说了多个并发任务共享一个资源时的同步情况 这个共享资源可以是一个对象 也可以是一个对象的属性 访问共享资源的代码块叫做临界区基本同步机制:1:synchronized关键字2;Lock接口及其实现类 :如 reentrantLock,ReentrantrReadWriterLock ReadLock和ReentrantReadWriteLoc原创 2016-12-19 20:01:02 · 435 阅读 · 0 评论 -
java并发编程之线程同步基础(二)使用锁实现同步
1:Lock 使用锁实现同步java提供了同步代码块的另一种机制 它是一种比synchronized关键字更强大更灵活的机制 这个机制基于Lock接口及其实现类支持更灵活的同步快代码结构 使用sychronized关键字时 只能在同一个synchronized块结构中获取和释放控制 Lock接口徐云实现更复杂的临界区结构相比sychronized关键字 Lock结构提供了更原创 2016-12-19 16:06:55 · 276 阅读 · 0 评论 -
java并发编程之线程执行器
1:简介通常 使用java来开发一个简单的并发应用程序时 会创建一些Runnable对象然后创建对应的Thread对象来执行他们 但是 如果需要开发一个程序运行大量的并发任务 这个会显示出以下劣势:必须实现所有与Thread对象管理的代码 比如线程的创建 结束以及结果获取 需要为每一个任务创建一个Thread对象 如果需要执行大量的任务 这将大大的影响应用程序的处理能力计算机的资源原创 2016-12-23 12:38:37 · 287 阅读 · 0 评论 -
java并发编程之线程同步辅助类(二)
1:在集合点同步:java并发api提供了CyclicBarrier类 他是一个同步类 它允许两个或者多个线程在某个点上进行同步 这个类与上面说的eCountDownLatch类类似 但也有不同之处CycliBarrier类使用一个整数进行初始化 这个数十需要在某个点上同步的线程数 当一个线程到达指定的点后 它将调用await方法来等他其他线程 当线程调用await方法后 CycliBarrier类将阻塞这个线程并使之休眠知道所有线程都到达 当最后一个线程调用CycliBarrier类的await方法原创 2016-12-21 19:22:09 · 318 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
转载:点击打开链接 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲转载 2017-11-16 18:06:16 · 218 阅读 · 0 评论