
并发
文章平均质量分 84
hellodake
这个作者很懒,什么都没留下…
展开
-
生产者消费者的三种实现方式
1.使用阻塞队列实现Producer:package 使用阻塞队列实现;import java.util.concurrent.BlockingQueue;//生产者public class Producer implements Runnable{ private BlockingQueue sharedQueue; //构造函数,指定生产者生产的线程要放到哪里 pu...原创 2018-08-27 09:13:23 · 580 阅读 · 0 评论 -
乐观锁、悲观锁,实现一个乐观锁
悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁、表锁、读锁、写锁等,都是在操作之前先上锁。再比如java里面的同步原语synchronized关键字的实现也是悲观锁。乐观锁 总是认为不会产生并发问题,所以每次去取数据的时候总认为别...原创 2018-08-23 11:24:52 · 242 阅读 · 0 评论 -
线程池种类以及参数设置问题
JDK1.5中引入了强大的concurrent包,线程池的实现ThreadPoolExcutor。线程池种类 通常开发者都是利用Executors提供的通用线程池创建方法,去创建不同配置的线程池,主要区别在于ExecutorService类型或者不同的初始参数。 Executors目前提供了五种不同的线程池创建配置:newCachedThreadPool(),它是一种用...原创 2018-08-23 10:38:33 · 1539 阅读 · 0 评论 -
如何实现线程安全?
当多个线程同时访问一个资源的时候,可能会导致运行结果并不是想看到的结果,这个资源也称为临界资源,共享资源。那么如何解决线程安全问题呢? 一般来说,基本上所有的并发模式在解决线程安全问题时,采用的操作都是序列化访问共享资源。在java中,提供了两种方式,synchronized和Lock。synchronized: 在java中,每一个对象都拥有一个锁标记,monit...原创 2018-08-21 15:07:40 · 6517 阅读 · 0 评论 -
AQS理解
AbstractQueuedSynchronizer简称AQS,是一个用于构建锁和同步容器的框架。事实上concurrent包内许多类都是基于AQS构建,例如ReentrantLock、Semaphere、CountDownLatch、FutureTask等。AQS解决了在实现同步容器时设计的大量细节问题。 AQS使用一个FIFO的队列表示排队等待锁的线程,队列头节点称作哨兵节点...原创 2018-09-11 20:53:59 · 560 阅读 · 0 评论