并发编程
毛辣叮
看见夕阳下的奔跑,那是我遗失的青春。
展开
-
java 并发容器框架
1 ConcurrentHashMap线程不安全的HashMap因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但是效率极其低下。实现原理ConcurrentH原创 2017-03-06 11:13:14 · 214 阅读 · 0 评论 -
java 并发工具类-CountDownLatch
1.线程同步工具之CountDownLatchCountDownLatch主要接口分析CountDownLatch工作原理相对简单,可以简单看成一个倒计数器,在构造方法中指定初始值,每次调用countDown()方法时将计数器减1,而await()会等待计数器变为0。CountDownLatch关键接口如下countDown() 如果当前计数器的值大于1,则将其减1原创 2017-03-06 11:45:58 · 415 阅读 · 0 评论 -
java 并发工具类-CyclicBarrier
CyclicBarrier和CountDownLatch一样,都是关于线程的计数器。其实原理都是一样的只是,CyclicBarrier与CountDownLatch 最大区别在 CyclicBarrier 在运行错误可以重新set数值,重新跑线程,而CountDownLatch 只能减一 不能重新设置。CyclicBarrier和CountDownLatch的区别Cou原创 2017-03-06 12:17:05 · 284 阅读 · 0 评论 -
java 并发工具类-Semaphore
Semaphore可以用于做流量控制,特别是公用资源有限的应用场景,比如数据库连接。假如有一个需求,要读取几万个文件的数据,因为都是IO密集型任务,我们可以启动几十个线程并发地读取,但是如果读到内存后,还需要存储到数据库中,而数据库的连接数只有10个,这时我们必须控制只有10个线程同时获取数据库连接保存数据,否则会报错无法获取数据库连接。这个时候,就可以使用Semaphore来做流量控制原创 2017-03-06 14:01:54 · 291 阅读 · 0 评论 -
java 并发工具类-Exchanger
线程间交换数据的ExchangerExchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据,如果第一个线程先执行exchange()方法,它会一直等待第二个线程也执行exchange方法,当两个线程都到达同步点时,这两个线程就可以交换数据,将本原创 2017-03-06 14:12:56 · 409 阅读 · 0 评论 -
Executor框架
Java SE5的java.util.concurrent包中的执行器(Executor)将为你管理Thread对象,从而简化了并发编程。Executor引入了一些功能类来管理和使用线程Thread,其中包括ThreadPoolExecutor (线程池),Executor,Executors,ExecutorService,CompletionService,Future,Callable等原创 2017-03-06 15:25:18 · 243 阅读 · 0 评论 -
ThreadPoolExecutor
线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize,int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, RejectedEx原创 2017-03-06 17:27:11 · 384 阅读 · 0 评论 -
并发多线程
1、线程======================================================================================================================================-----线程的强制运行--------------------join()----------------------原创 2017-08-11 00:18:12 · 203 阅读 · 0 评论 -
并发Queue一
ConcurrentMap接口有如下两个重要的实现 ConcurrentHashMap 内部使用段来表示这些不同的部分,每一个段就是一个小的hashTable,每一个段有自己的锁 整体分成16个段,最高支持16个线程并发修改,这种方式是减小锁的粒度从而降低竞争的一种方案 ConcurrentSkipListMap (支持并发排序,弥补了ConcurrentHas原创 2017-07-27 11:32:29 · 262 阅读 · 0 评论