java并发编程
huangzebiao007
这个作者很懒,什么都没留下…
展开
-
ThreadLocal类
synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容。为了防止在多线程访问的过程中,可能会出现的并发错误。不得不对多个线程的访问进行同步,这样也就意味着,多个线程必须先后对变量的值进行访问或者修改,这是一种以延长访问时间来换取线程安全性的策略。而ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥原创 2014-04-19 18:45:34 · 548 阅读 · 0 评论 -
线程池Executor与ExecutorService
在生产环境中,为每个任务分配一个线程存在一些原创 2014-04-26 18:33:44 · 789 阅读 · 0 评论 -
同步工具类--闭锁、信号量、栅栏的总结
闭锁用于一组线程等待(阻塞)一个外部事件的发生,这个事件发生之前这些线程阻塞,等待控制线程打开闭锁,然后这些线程同时开始执行。闭锁强调的是阻塞后的同时开始;栅栏则是一组线程相互等待,直到所有线程都到达某一点时才打开栅栏,然后线程可以继续执行,也就是说控制线程先设置一个时间点,然后这些线程各自执行,执行完等待(阻塞),直到这组线程中的所有线程执行完,然后控制线程栅栏打开,这些线程同时继续执行。栅栏强原创 2014-04-25 23:34:02 · 2415 阅读 · 0 评论 -
闭锁CountDownLatch
闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用是在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。即,一组线程等待某一事件发生,事件没有发生前,所有线程将阻塞等待;而事件发生后,所有线程将开始执行;闭锁最初处于封闭状态,当事件发生后闭锁将被打开,一旦打开,闭锁将永远处于打开状态。CountDownLatch类是一种灵活的闭锁实现,它可以使一个或多个线原创 2014-04-22 21:09:46 · 568 阅读 · 0 评论 -
信号量Semaphore
Semaphore 是一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。说白了,Semaphore是一个计数器,在计数器不为0的时候对线程就放行,一旦达到0原创 2014-04-25 22:27:42 · 659 阅读 · 0 评论 -
栅栏CyclicBarrier
它允许一组线程互相等待,直到到达某个公共屏障点。利用栅栏,可以使线程相互等待,直到所有线程都到达某一点,然后栅栏将打开,所有线程将通过栅栏继续执行。CyclicBarrier支持一个可选的 Runnable 参数,当线程通过栅栏时,runnable对象将被调用。构造函数CyclicBarrier(int parties, Runnable barrierAction),当线程在CyclicBarr原创 2014-04-25 22:50:27 · 569 阅读 · 0 评论 -
BlockingQueue阻塞队列和生产者-消费者模式
BlockingQueue阻塞队列是一个线程安全的类,如果队列为kong原创 2014-04-21 00:14:54 · 2762 阅读 · 0 评论 -
java内置锁synchronized的可重入性
当线程请求一个由其它线程持有的对象锁时,该线程会阻塞,而当线程请求由自己持有的对象锁时,如果该锁是重入锁,请求就会成功,否则阻塞。java中获取锁的操作的粒度是“线程”,而不是“调用”,即不是每一次调用都是建立一个锁。重入锁的一种实现方法是为每个锁关联一个线程持有者和计数器,当计数器为0时表示该锁没有被任何线程持有,那么任何线程都可能获得该锁而调用相应的方法;当某一线程请求成功后,JVM会原创 2014-04-12 01:57:50 · 5997 阅读 · 1 评论 -
使用正确的锁对象来保证线程安全
在java集合中,有些容器是线程安全的(Vector,ConcurrentLinkedQueue等),有些则不是(list等),对线程不安全的容器,可以利用类似 private static List taskQueue = Collections.synchronizedList(new LinkedList());的方法得到本身不是线程安全的容器的线程安全的状态,但是要注意的一点是,无论是原创 2014-04-20 16:07:46 · 1124 阅读 · 1 评论 -
java并发编程中的随笔
1、使用ConcurrenthHashMap比用synchronzied同步了的HashMap效率要高得多2、同步的jizhi原创 2014-05-14 21:32:17 · 565 阅读 · 0 评论