java-thread
iteye_5504
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
源码剖析之CyclicBarrier
CyclicBarrier:jdk current 包提供了一个让多个线程在某个点到达之前都互相等待的工具类,并且可以多次循环使用,故曰:循环障碍器。 使用场景:[b]它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待[/b],此时 CyclicBarrier 很有用。因为[b]该 ba...2013-06-07 00:07:24 · 145 阅读 · 0 评论 -
Thread的join方法
Thread类中的join方法的语义: void java.lang.Thread.join() throws InterruptedException Waits for this thread to die. Throws: InterruptedException if any thread has interrupted the current thread. The i...原创 2013-02-25 23:44:36 · 253 阅读 · 0 评论 -
lock 锁class类对象和实例对象
java thread 线程中 的synchronized关键字 可以放到方法上,也可以修饰对象上 eg: [code="java"] private synchronized void testSyncMethod() { //当线程执行到此处时,它必须获得一个锁,此时锁定的对象是:调用此方法的对象a } private void testSyncMethod() {...原创 2013-02-25 23:18:09 · 788 阅读 · 0 评论 -
lock实现运行时死锁检测
java的多线程机制非常强大。其中死锁会导致程序无止境的等待,影响系统的正常运行,并且不是发生时立即被发现,一旦被发现定然是,系统出现了明显的功能性无法正常运行,甚至是系统崩溃。 下面我们讨论死锁的成因以及死锁的检测方法。 1、首先是系统运行时线程和锁之间的关系: 第一种情况:lock等待持有他们的thread将其释放。这些lock是由thread所持有,即thread获得了lock,其...原创 2013-02-24 23:02:40 · 388 阅读 · 0 评论 -
异常与锁的释放(synchronized )
synchronized 获取的锁,在方法抛出异常的时候会自动解锁 [code="java"] package com.horizon.thread.synchronize; /** * function:主要演示了 synchronized 获取的锁,在方法抛出异常的时候会自动解锁 * @author 新春.王 * */ public class Synchroni...原创 2013-02-16 23:28:55 · 680 阅读 · 0 评论 -
异常与锁的释放(lock)
获取lock锁后发生异常后,线程退出,lock锁不释放 [code="java"] package com.horizon.thread.basic; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 演示功能: * 当lock锁获...原创 2013-02-16 22:57:11 · 1921 阅读 · 0 评论 -
ThreadLocal 在web环境下使用的边界问题
ThreadLocal 相关分析,请查看[url]http://wangxinchun.iteye.com/blog/1884228[/url] 另外一个必须要提的点是: ThreadLocal在线程池环境下的使用。 比如tomcat 提供的web http请求,一般都有线程池对请求做处理。 这种情况下要注意,并非每次web请求时候程序运行的ThreadLocal都是唯一的,Threa...2014-06-12 13:30:17 · 175 阅读 · 0 评论 -
原码剖析之ThreadPoolExecutor进阶
继续ThreadPoolExecutor 线程池的分析~~~~~ 一般一个简单线程池至少包含下列[b]组成部分[/b]: 1.线程池管理器(ThreadPoolManager):用于创建线程并管理线程池。 2.工作线程(WorkThread): 线程池中线程。 3.任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行。 4.任务队列(BlockingQueue...原创 2013-06-17 17:15:51 · 140 阅读 · 0 评论 -
原码剖析之ThreadPoolExecutor入门
jdk 1.5 开始提供支持线程池的功能。 线程池使用的场景:创建线程的时间和资源耗费较高,线程执行时间较短。 [b]优点:[/b] 1. 这样使用线程池可以避免多次创建耗费巨大的线程,去完成一个较小的任务 2. 复用线程,减低系统的资源浪费。 3. 另外就是线程已经创建好等待任务的执行,那么相应性也会大大提高。 4. 通过适当地调整线程池中的线程数目,也就是当请求的数目超过某个阈...原创 2013-06-15 10:44:21 · 131 阅读 · 0 评论 -
源码剖析之ThreadLocal
[b]背景:[/b]1、如果一个对象中有成员,当通过调用对象的方法操作(修改、查询等)成员时,如果没有加锁或者同步访问,那么可能会存在线程安全的问题。 2、但是有时候又需要定义某些成员变量,来方便[b]多个方法间[/b]共享对象数据的访问。以避免在方法间传递大量的参数,ThreadLocal 就提供了这样的效果。 解决问题1的方案:我们解决此问题的一个常用手段是加锁,然而加锁会造成程序伸缩...原创 2013-06-08 12:57:53 · 122 阅读 · 0 评论 -
多个线程到达后才能执行某个任务,并且只能执行一次
[b]有一种场景:多个线程到达(比如合并多个线程返回的结果)后才能执行某个任务,并且只能执行一次。[/b] 有几种方式: 1、Thread的join,不再讲解,因为使用不方便,也是不建议使用的方式。 2、AtomicInteger ,其increaseAndGet 是非常方便实现这个需求的。 3、CountDownLatch ,这个组件也可以,并且在特定场景下,这个是最好的实现,比如有...2015-04-02 23:51:44 · 1105 阅读 · 0 评论
分享