2018年7月13日

java Exchanger

摘要: Exchanger 用于两个线程之间交换数据,举例; 执行结果: 大概意思就是一个线程交换的数字是从1 10,而另一个线程则每次交换的数据都是0,可以看出这个exchanger.exchange(data);方法是一个阻塞方法,当一个线程等待交换时,一定会等到另一个线程也执行exchanger.ex 阅读全文

posted @ 2018-07-13 18:03 天生一对 阅读(238) 评论(0) 推荐(0) 编辑

java CyclicBarrier以及和CountDownLatch的区别

摘要: CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是CyclicBarrier(int pa 阅读全文

posted @ 2018-07-13 17:29 天生一对 阅读(244) 评论(0) 推荐(0) 编辑

java CountDownLatch的使用

摘要: CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成了任务,然后在CountDownLatch上等待的线程就可以恢复执行 阅读全文

posted @ 2018-07-13 16:42 天生一对 阅读(156) 评论(0) 推荐(0) 编辑

java Concurrent 中的数据结构

摘要: 一:阻塞数据结构(线程安全) 二:并发数据结构(线程安全) 阅读全文

posted @ 2018-07-13 16:00 天生一对 阅读(301) 评论(0) 推荐(0) 编辑

java7,java8 中HashMap和ConcurrentHashMap简介

摘要: 一:Java7 中的HashMap 结构: HashMap 里面是一个数组,然后数组中每个元素是一个单向链表。链表中每个元素称为一个Entry 实例,Entry 包含四个属性:key, value, hash 值和用于单向链表的 next。 属性: capacity :当前数组容量,始终保持 2^n 阅读全文

posted @ 2018-07-13 15:15 天生一对 阅读(728) 评论(0) 推荐(0) 编辑

java concurrent 中ExecutorService和CompletionService简单区别

摘要: 举个例子,现在需要执行10个任务,这些任务都是有返回值,并且需要使用10个线程同时执行。一般的做法就是创建ExecutorService线程池,pool大小10,每个任务实现Callable接口,然后执行使用List保存每个线程的Future结果,然后遍历这个List,取出future,然后使用.g 阅读全文

posted @ 2018-07-13 11:21 天生一对 阅读(149) 评论(0) 推荐(0) 编辑

java Runnable、Callable、FutureTask 和线程池

摘要: 一:Runnable、Callable、FutureTask简介 (1) Runnable :其中的run()方法没有返回值。 ①.Runnable对象可以直接扔给Thread创建线程实例,并且创建的线程实例与Runnable绑定,线程实例调用start()方法时,Runnable任务就开始真正在线 阅读全文

posted @ 2018-07-13 10:29 天生一对 阅读(1622) 评论(0) 推荐(0) 编辑

导航