
多线程
「已注销」
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
原子变量 java.util.concurrent.atomic jdk 1.7
在java并发包的一个子包中,提供了针对于基础类型的原子类型,熟悉并发的会知道,i++并不是一个原子操作,long longValue = 100l;也不是一个原子操作; 那么java.util.concurrent.atomic包中是如何实现对基础类型数据的原子操作的呢? 以AtomicLong类为例: private volatile long value; Ato...原创 2014-05-04 17:53:40 · 128 阅读 · 0 评论 -
Semaphore 使用案例
Semaphore即信号量,可以被多个线程获取,下面是一个具体的例子,和Lock配合使用,模拟有三台打印机,一次允许三个线程使用空闲的打印机,代码如下: package thread; import java.util.concurrent.Semaphore; import java.util.concurrent.locks.Lock; import java.util.c...原创 2014-04-10 11:16:13 · 247 阅读 · 0 评论 -
Thread UncaughtExceptionHandler
做web开发的时候,一般都是在Controller统一捕捉异常,在业务逻辑里抛出自定义的异常;如果代码中使用了多线程,线程中出错,或者你在线程中抛出一个异常,在最外层Controller里是无法捕捉到线程中的异常的, Thread类中定义了一个内部接口UncaughtExceptionHandler,此接口用来统一处理线程出错后的处理,自己可定义一个类,来处理对应的错误 class ...原创 2014-04-09 16:16:42 · 329 阅读 · 0 评论 -
ArrayBlockingQueue 源码赏析
ArrayBlockingQueue为BlockingQueue的实现类,常用的阻塞队列,先来看一下次类的成员变量: /** 存放数据的数组*/ final Object[] items; /**队列出口数据在数组中的下标*/ int takeIndex; /**队列入口在数组中的下标*/ int putIndex...原创 2014-04-08 20:54:26 · 103 阅读 · 0 评论 -
生产者消费者 BlockingQueue 实现
BlockingQueue是一个线程安全的队列,本身的部分方法实现了线程之间的调度,实现生产者消费者非常方便,比synchronized,wait更容易控制,不过看BlockingQueue的实现类ArrayBlockingQueue的源码,主要还是使用Lock和条件变量Condition来实现,足以见的Lock的灵活和强大,下面是我写的实现: import java.util.concurr...原创 2014-04-08 20:28:55 · 152 阅读 · 0 评论 -
BlockingQueue深入分析(转载)
本文转载自:http://www.2cto.com/kf/201212/175028.html 一、概述: BlockingQueue作为线程容器,可以为线程同步提供有力的保障。 二、BlockingQueue定义的常用方法 1.BlockingQueue定义的常用方法如下: 抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e, tim...原创 2014-04-08 16:51:27 · 124 阅读 · 0 评论 -
SimpleDateFormat ThreaLocal 线程不安全 性能问题
使用simpleDateFormat的时候,有时会报错: java.lang.NumberFormatException: multiple points 报此错是因为SimpleDateFormat是线程非安全的,如果在每个方法中使用到SimpleDateFormat对象的时候,就会短暂的创建SimpleDateFormat对象,方法执行完后被回收,这样做内存开销比较大;在类中定义一个...原创 2014-04-08 15:19:57 · 126 阅读 · 0 评论 -
ReentrantReadWriteLock
1 写锁排斥对象上所有方法的读写锁 2 读锁排斥对象上所有方法写锁,不排斥读锁 3 log4j是线程安全的原创 2014-04-03 11:35:30 · 113 阅读 · 0 评论 -
生产者消费者 Lock Condition实现
网上有很多生产者消费者模型,很多都是基于synchronized, wait, notify的,也有基于Lock的,下面是我用Lock, Condition实现的. 1 仓库: class GodOwn { //声明锁对象 private Lock lock = new ReentrantLock(); //当仓库中的物品数量不够消费的条...原创 2014-04-02 10:40:28 · 145 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量(转载)
本文转载自:http://www.ibm.com/developerworks/cn/java/j-jtp06197.html Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的...原创 2014-03-31 11:19:57 · 110 阅读 · 0 评论 -
线程中断(转载)
本文转载自:http://blog.chinaunix.net/uid-122937-id-215995.html 1.中断概述 在多线程编程中经常会遇到需要中止线程的情况,比如启动多个线程去数据库中搜索,如果有一个线程返回了结果,其他线程就可以取消了。中断线程的三个相差函数 1.通过成员方法Thread.interrupt()来设置中断状态为true ...原创 2014-05-06 15:06:48 · 157 阅读 · 0 评论 -
java 多线程 wait nofity notifyAll 线程唤醒之后的执行
下面是我自己写的一个生产者消费者程序 /** * 馒头 */ class Mantou { } /** * 仓库,用来存放馒头 */ class GodOwn { private List<Mantou> mantouList; int max = 10; GodOwn () { thi...原创 2014-10-28 17:08:25 · 397 阅读 · 0 评论