
Java多线程
英杰.王
这个作者很懒,什么都没留下…
展开
-
Java多线程-新特性-线程池-学习笔记1
Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。大部分介绍线...原创 2014-05-21 16:00:17 · 122 阅读 · 0 评论 -
Java多线程-新特性-有返回值的线程-学习笔记2
原创 2014-05-21 16:44:13 · 135 阅读 · 0 评论 -
Java多线程-新特征-锁(上)-学习笔记3
原创 2014-05-21 20:55:06 · 90 阅读 · 0 评论 -
Java多线程-新特征-锁(下)-学习笔记4
原创 2014-05-21 21:09:20 · 81 阅读 · 0 评论 -
Java多线程-新特征-信号量Semaphore-学习笔记5
原创 2014-05-22 09:31:53 · 93 阅读 · 0 评论 -
Java多线程-新特征-阻塞队列ArrayBlockingQueue-学习笔记6
添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可用元素为止。有了这样的功能,就为多线程的排队等候的模型实现开辟了便捷通道,非常有用。java.util.concurrent.BlockingQueue继承了java.util.Queue接口,可以参看API文档。import java.util.concurrent.ArrayBlockingQueue;/** * 阻塞队列 * * @author 吖大哥 *原创 2014-05-22 10:00:15 · 116 阅读 · 0 评论 -
Java多线程-新特征-阻塞栈LinkedBlockingDeque-学习笔记7
原创 2014-05-22 10:24:36 · 105 阅读 · 0 评论 -
Java多线程-并发协作(生产者消费者模型)-学习笔记8
原创 2014-05-22 10:34:04 · 99 阅读 · 0 评论 -
Java多线程-ThreadLocal-学习笔记9
hreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。 从线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收(除非存在对这些副本的其他引用)。 通过ThreadLoc原创 2014-05-22 15:00:33 · 97 阅读 · 0 评论 -
传统线程通信-线程执行过程中进行条件切换-学习笔记10
原创 2014-05-24 18:32:55 · 76 阅读 · 0 评论 -
Condition线程通信-线程执行过程中进行条件切换-学习笔记11
原创 2014-05-24 19:38:11 · 199 阅读 · 0 评论 -
Java多线程- 一目了然线程的调度(合并Join)-学习笔记12
原创 2014-05-27 22:42:04 · 108 阅读 · 0 评论 -
ConcurrentHashMap 的实现原理及与HashTable的比较
原创 2014-05-28 22:50:08 · 142 阅读 · 0 评论 -
Java多线程-对象锁Synchronized之我见
是为了理解Java线程里面提供的同步关键字 synchronized 对象锁 synchronized * 获取的是对象锁,我们可以理解为对象的锁就一把,一旦一根线程获取之后另外一根线程就只能等待 以下的模拟是: * * 当一根线程进入一个对象的synchrozied方法之后,另外的线程将无法同时在进入该 * 对象其它的synchronized方法,但是可以进入该对象的其它非synchronized * * 测试注意事项: * <li>1、由于线程原创 2014-06-01 17:06:31 · 117 阅读 · 0 评论 -
Java线程基本概念-学习笔记
原创 2014-06-02 10:07:04 · 104 阅读 · 0 评论 -
Java多线程-传统线程实现生产者消费者模型-学习笔记
,篮子用数组模拟栈先进后出且大小为10,当生产者把篮子装满了即刻等着同时通知消费者消费;当消费者把篮子消费空了即刻等着同时通知生产者生产。代码并不复杂,使用线程同步关键字synchronized即可完成…… Coding:/** * 利用传统线程实现生产者消费者模型 * * 利用两根线程生产20个馍馍,一根线程消费20个馍馍,协调作业, * * <li>一根线程 wait 则需要调用 notify 方法 </li&原创 2014-06-02 15:06:47 · 111 阅读 · 0 评论 -
Java多线程-新特性-线程池-学习笔记1
原创 2014-05-21 16:00:17 · 89 阅读 · 0 评论 -
Lock与synchronized 的区别
1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候 线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定, 如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断 如果 使用ReentrantLock,如果A不释放,可以使B在等待...原创 2014-06-14 22:57:16 · 105 阅读 · 0 评论 -
Java多线程-新特性-有返回值的线程-学习笔记2
在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。现在Java终于有可返回值的任务(也可以叫做线程)了。可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了...原创 2014-05-21 16:44:13 · 156 阅读 · 0 评论 -
Java多线程-新特征-锁(上)-学习笔记3
在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。Condition: Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同...原创 2014-05-21 20:55:06 · 104 阅读 · 0 评论 -
Java多线程-新特征-锁(下)-学习笔记4
在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,在一定程度上提高了程序的执行效率。Java中读写锁有个接口java.util.concurrent.locks.ReadWriteLock,也有具体的实现ReentrantReadWriteL...原创 2014-05-21 21:09:20 · 109 阅读 · 0 评论 -
Java多线程-新特征-信号量Semaphore-学习笔记5
简介信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。概念Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。以一个停车场运作为例。为了简单起见,假设停车场只有三个车位,一开始三个车位都是空的。这时如果同时来了五辆车,看门人允许其中三辆不受阻碍的进入,然后放下...原创 2014-05-22 09:31:53 · 120 阅读 · 0 评论 -
Java多线程-新特征-阻塞队列ArrayBlockingQueue-学习笔记6
阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可用元素为止。有了这样的功能,就为多线程的排队等候的模型实现开辟了便捷通道,非常有用。java.ut...原创 2014-05-22 10:00:15 · 146 阅读 · 0 评论 -
Java多线程-新特征-阻塞栈LinkedBlockingDeque-学习笔记7
对于阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头。这里要特别说明一点的是,阻塞栈是Java6的新特征。、Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多,具体可以查看JavaAPI文档。下面看一个简单例子:/** * 阻塞栈 * * @...原创 2014-05-22 10:24:36 · 104 阅读 · 0 评论 -
Java多线程-并发协作(生产者消费者模型)-学习笔记8
对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了,利用前面说过的堵塞栈实现该模式异常简洁。对于此模型,应该明确一下几点:1、生产者仅仅在仓储未满时候生产,仓满则停止生产。2、消费者仅仅在仓储有产品时候才能消费...原创 2014-05-22 10:34:04 · 131 阅读 · 0 评论 -
Java多线程-ThreadLocal-学习笔记9
一、概述ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线...原创 2014-05-22 15:00:33 · 147 阅读 · 0 评论 -
传统线程通信-线程执行过程中进行条件切换-学习笔记10
传统线程通讯执行过程中的通信是通过Object类的wait()、notify()、notifyAll()方法来实现的,下面我们通过一个案例来学习一下这些方法。 案例: 假设现在存在两个线程,主线程main与一个子线程,首先子线程执行5次,然后切换到主线程执行10次,再切换至子线程执行5次,主线程执行10次,如此各循环3次。 程序代码如下:/**...原创 2014-05-24 18:32:55 · 108 阅读 · 0 评论 -
Condition线程通信-线程执行过程中进行条件切换-学习笔记11
Java5 中提过了Condition ,该类可以实现线程间的条件控制,废话少说直接来看一个实例。实例: 启动两根子线程,连同主线程一共3根线程,实现子线程1执行5次切换至子线程2执行5次,再切换至主线程执行5,然后切换至子线程1执行5次,如此往复3次,程序退出。 程序代码:import java.util.concurrent.locks.Condition;...原创 2014-05-24 19:38:11 · 163 阅读 · 0 评论 -
Java多线程- 一目了然线程的调度(合并Join)-学习笔记12
线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。join为非静态方法,定义如下:void join(): 等待该线程终止。 void join(long millis): 等待该线程终止的时间最长为 millis 毫秒。 void join(long millis, int nanos)...原创 2014-05-27 22:42:04 · 164 阅读 · 0 评论 -
ConcurrentHashMap 的实现原理及与HashTable的比较
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益...原创 2014-05-28 22:50:08 · 161 阅读 · 0 评论 -
Java多线程-对象锁Synchronized之我见
正确理解Java中的多线程多Synchronized对我们学习多线程编程非常重要,下面的测试程序阐述了Java对象锁的特性,例子如下Coding: /** * 该例子程序是为了理解Java线程里面提供的同步关键字 synchronized 对象锁 synchronized * 获取的是对象锁,我们可以理解为对象的锁就一把,一旦一根线程获取之后另外一根线程就只能等待 以下的模...原创 2014-06-01 17:06:31 · 144 阅读 · 0 评论 -
Java线程基本概念-学习笔记
Java线程基本概念: Java如何创建一个线程: Java线程基本方法:原创 2014-06-02 10:07:04 · 242 阅读 · 0 评论 -
Java多线程-传统线程实现生产者消费者模型-学习笔记
Java中的生产者消费者模型属于编程中的经典模型,下面利用线程简单模拟一下这个模型,例子:两个生产者生产馍馍(馒头),往装馍馍的篮子里面放,篮子用数组模拟栈先进后出且大小为10,当生产者把篮子装满了即刻等着同时通知消费者消费;当消费者把篮子消费空了即刻等着同时通知生产者生产。代码并不复杂,使用线程同步关键字synchronized即可完成…… Coding:/** * 利...原创 2014-06-02 15:06:47 · 154 阅读 · 0 评论 -
Lock与synchronized 的区别
原创 2014-06-14 22:57:16 · 124 阅读 · 0 评论