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