随笔分类 - Concurrent

摘要: 转载: "Java多线程基础:进程和线程之由来" 在前面,已经介绍了Java的基础知识,现在我们来讨论一点稍微难一点的问题:Java并发编程。当然,Java并发编程涉及到很多方面的内容,不是一朝一夕就能够融会贯通使用的,需要在实践中不断积累。由于并发肯定涉及到多线程,因此在进入并发编程主题之前,我们阅读全文
posted @ 2016-03-31 02:39 Andrew.Zhou 阅读(114) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:Thread类的使用" 今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,阅读全文
posted @ 2016-03-31 02:37 Andrew.Zhou 阅读(107) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:如何创建线程?" 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。 一.Java中关于应用程序和进程相关的概念 在阅读全文
posted @ 2016-03-31 02:26 Andrew.Zhou 阅读(105) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:volatile关键字解析" volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字阅读全文
posted @ 2016-03-31 01:53 Andrew.Zhou 阅读(135) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:深入剖析ThreadLocal" 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,阅读全文
posted @ 2016-03-31 01:37 Andrew.Zhou 阅读(160) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:同步容器" 为了方便编写出线程安全的程序,Java里面提供了一些线程安全类和并发工具,比如:同步容器、并发容器、阻塞队列、Synchronizer(比如CountDownLatch)。今天我们就来讨论下同步容器。 一.为什么会出现同步容器? 在Java的集合容器框架中,主阅读全文
posted @ 2016-03-31 01:17 Andrew.Zhou 阅读(364) | 评论 (0) 编辑
摘要: 转载: "Java ConcurrentModificationException异常原因和解决方法" 在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来阅读全文
posted @ 2016-03-31 01:07 Andrew.Zhou 阅读(106805) | 评论 (4) 编辑
摘要: 转载: "Java并发编程:并发容器之ConcurrentHashMap" JDK5中添加了新的concurrent包,相对同步容器而言,并发容器通过一些机制改进了并发性能。因为同步容器将所有对容器状态的访问都串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容阅读全文
posted @ 2016-03-31 00:56 Andrew.Zhou 阅读(548) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:并发容器之CopyOnWriteArrayList" Copy On Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策阅读全文
posted @ 2016-03-31 00:44 Andrew.Zhou 阅读(198) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:Callable、Future和FutureTask" 在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量阅读全文
posted @ 2016-03-30 23:50 Andrew.Zhou 阅读(95) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:阻塞队列" 在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。 阅读全文
posted @ 2016-03-30 23:06 Andrew.Zhou 阅读(91) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:线程池的使用" 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Jav阅读全文
posted @ 2016-03-30 22:44 Andrew.Zhou 阅读(106) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:CountDownLatch、CyclicBarrier和Semaphore" 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法阅读全文
posted @ 2016-03-30 22:07 Andrew.Zhou 阅读(89) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition" 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者 消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产阅读全文
posted @ 2016-03-30 19:45 Andrew.Zhou 阅读(103) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:Lock" 一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该阅读全文
posted @ 2016-03-27 16:03 Andrew.Zhou 阅读(71) | 评论 (0) 编辑
摘要: 转载: "Timer与TimerTask的真正原理&使用介绍" 其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: 这里直接实现一个TimerTask(当然,你可以实现多个TimerTask,多个Tim阅读全文
posted @ 2016-03-27 15:32 Andrew.Zhou 阅读(64) | 评论 (0) 编辑
摘要: 转载: "Java并发编程:synchronized" 虽然多线程编程极大地提高了效率,但是也会带来一定的隐患。比如说两个线程同时往一个数据库表中插入不重复的数据,就可能会导致数据库中插入了相同的数据。今天我们就来一起讨论下线程安全问题,以及Java中提供了什么机制来解决线程安全问题。 以下是本文的阅读全文
posted @ 2016-03-27 00:48 Andrew.Zhou 阅读(83) | 评论 (0) 编辑
摘要: 转载: "Java中synchronized的使用实例" 一、使用场景 在负责后台开发的时候,很多时候都是提供接口给前端开发人员去调用,会遇到这样的场景: 需要提供一个领奖接口,每个用户名只能领取一次,我们可以将成功领取的用户在数据库用个标记保存起来。如果这个用户再来领取的时候,查询数据库看该用户是阅读全文
posted @ 2016-03-24 23:46 Andrew.Zhou 阅读(4247) | 评论 (1) 编辑
摘要: 转载: "Java并发编程:性能、扩展性和响应" 1、介绍 本文讨论的重点在于多线程应用程序的性能问题。我们会先给性能和扩展性下一个定义,然后再仔细学习一下Amdahl法则。下面的内容我们会考察一下如何用不同的技术方法来减少锁竞争,以及如何用代码来实现。 2、性能 我们都知道,多线程可以用来提高程序阅读全文
posted @ 2016-03-22 18:50 Andrew.Zhou 阅读(107) | 评论 (0) 编辑