上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 概念:CountDownLatch是多线程里面一个类似于计数器的高级同步工具,它的初始值代表线程的数量,当一个线程完成了任务后,CountDownLatch的值就减1,当值为0的时候,代表所有线程完成了任务,然后等待的线程可以开始自己的任务。 方法:这里主要涉及到两个核心的方法: await():线 阅读全文
posted @ 2019-01-20 17:29 橘子洲头。 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 概念: Semaphore是信号量,又称为信号灯,它可以控制某个共享资源可被同时访问的次数,即可以维护当前访问某一共享资源的线程个数,并提供了同步机制。当Semaphore的个数变成1时,即代表只允许一个线程访问,这是Semaphore的功能就变成了Lock的功能。 它有两个核心方法: acquir 阅读全文
posted @ 2019-01-20 17:23 橘子洲头。 阅读(321) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock是重入锁,它与synchronized很像,它是synchronized的加强版,因为它具有一些synchronized没有的功能。下面我们看看两者的区别:synchronized具有一定的局限性: 当线程尝试获取锁的时候,如果获取不到锁会一直阻塞; 如果获取锁的线程进入休 阅读全文
posted @ 2019-01-19 17:50 橘子洲头。 阅读(192) 评论(0) 推荐(0) 编辑
摘要: CAS算法概述CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换。CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B。 CAS指令执行时,当且仅当内存地址V的值与预期值A相等时,将内存地址V的值修改为B,否则就什么都不做。整个比较并替换的操作是一个原子操作 阅读全文
posted @ 2019-01-18 20:58 橘子洲头。 阅读(1695) 评论(2) 推荐(0) 编辑
摘要: 1.什么是Atomic?Atomic,中文意思是“原子的”,在java多线程中,有这样的一个包: java.util.concurrent.atomic——线程安全的原子操作包 这是JDK1.5的版本中为我们提供的原子操作包。所谓“原子”操作,是指一组不可分割的操作,操作者对目标对象进行操作时,要么 阅读全文
posted @ 2019-01-18 16:24 橘子洲头。 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 在我的上一条博客中,已经介绍到了多线程的经典案列——生产者消费者模式,但是在上篇中用的是传统的麻烦的非阻塞队列实现的。在这篇博客中我将介绍另一种方式就是:用阻塞队列完成生产者消费者模式,可以使用多种阻塞队列,这里最好使用LinkedBlockingQueue 下面请看代码: 结果输出: 总结一下: 阅读全文
posted @ 2019-01-17 17:59 橘子洲头。 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 生产者消费者模型 具体来讲,就是在一个系统中,存在生产者和消费者两种角色,他们通过内存缓冲区进行通信,生产者生产消费者需要的资料,消费者把资料做成产品。生产消费者模式如下图。(图片来自网络,侵删!) 生产者消费者模型的实现 生产者是一堆线程,消费者是另一堆线程,内存缓冲区可以使用List数组队列,数 阅读全文
posted @ 2019-01-17 17:51 橘子洲头。 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1.什么是阻塞队列 我们知道,PriorityQueue、LinkedList这些都是非阻塞队列。在我们使用非阻塞队列的时候有一个很大问题,它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了, 阅读全文
posted @ 2019-01-17 17:42 橘子洲头。 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 关于这三个方法,我们可以查询API得到下列解释: wait():导致当前的线程等待,直到其他线程调用此对象的notify( ) 方法或 notifyAll( ) 方法或者指定的事件用完 notify():唤醒在此对象监视器上等待的单个线程 notifyAll():唤醒在此对象监视器上等待的所有线程 阅读全文
posted @ 2019-01-17 17:34 橘子洲头。 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 1.synchronized是什么?synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象(锁对象);2. 修饰一个(静态)方法,被修饰的方法称为同 阅读全文
posted @ 2019-01-17 15:03 橘子洲头。 阅读(152) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页