java
文章平均质量分 61
dreams512
这个作者很懒,什么都没留下…
展开
-
Semaphore_CountDownLach_CyclicBarrier
本文参考《java并发编程核心方法与框架》整理Semaphore 可以控制线程的数量Semaphore [ˈseməfɔ:(r)] 信号、信号系统 acquire和release获取释放许可证。 Semaphore semaphore = new Semaphore(n) 同一时刻可以有n个线程并发执行 semaphore.acquire() / acquire(int permits)原创 2016-11-29 10:43:00 · 402 阅读 · 0 评论 -
java中next与nextLine用法区别
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。 简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。原创 2017-04-11 13:00:25 · 707 阅读 · 0 评论 -
弗洛伊德java实现
弗洛伊德算法import java.util.ArrayList;import java.util.List;public class FloydInGraph { private static int INF = Integer.MAX_VALUE; private int[][] dist; //顶点i 到 j的最短路径长度,初值是i到j的边的权重 privat原创 2017-03-30 21:21:57 · 1014 阅读 · 1 评论 -
ubuntu安装jdk8
ubuntu安装jdk8 首先新建目录并将下载的jdk-8u111-linux-x64.tar.gz解压到该目录下sudo mkdir /usr/lib/jvmsudo tar zxvf jdk-8u111-linux-x64.tar.gz -C /usr/lib/jvm 为了方面,将jdk名为为jdk8修改环境变量sudo vim /etc/profileexport JAVA_HOME=/u原创 2016-12-27 22:17:53 · 423 阅读 · 0 评论 -
CAS与ABA问题
CAS实现原子操作的三大问题import java.util.ArrayList;import java.util.List;import java.util.concurrent.atomic.AtomicInteger;public class Counter { private AtomicInteger atomicInteger = new AtomicInteger(0);原创 2016-11-30 21:04:31 · 967 阅读 · 0 评论 -
常见的非阻塞队列
常见的非阻塞队列1) ConcurrentHashMap 2) ConcurrentSkipListMap 3) ConcurrentSkipListSet 4) ConcurrentLinkedQueue 5) ConcurrentLinkedDeque 6) CopyOnWriteArrayList 7) CopyOnWriteArraySetHashTable、Vector调用it原创 2016-11-29 17:26:14 · 2822 阅读 · 0 评论 -
阻塞队列学习小结
常见的阻塞队列结构类图 常见的几种阻塞队列有1) ArrayBlockingQueue 2) PriorityBlockingQueue 3) LinkedBlockingQueue 4) LinkedBlockingDeque 5) SynchronousQueue 6) DelayQueue 7) LinkedTransferQueueArrayBlockingQueue原创 2016-11-29 17:22:19 · 525 阅读 · 0 评论 -
ScheduledExecutorService
参考《java并发编程核心方法与框架》整理ScheduleExecutorServicejava中的计划任务Timer工具类提供了以计时器或计划任务的功能来实现按指定时间或时间间隔执行任务,但由于Timer不是以池pool,而是以队列的方式来管理线程的,所以在高并发的情况下运行效率较低,在新版JDK中提供了ScheduledExecutorService对象来解决效率与定时任务的功能 Schedu原创 2016-11-29 17:11:29 · 1776 阅读 · 0 评论 -
ExecutorService的invokeAny()方法测试
invokeAny()和invokeAll()具有阻塞性 在ThreadPoolExecutor中使用ExecutorService中的方法invokeAny()取得第一个完成任务的结果值,当第一个任务执行完成后,会调用interrupt()方法将其他任务中断,所以这些任务可以结合 if(Thread.currentThread().isInterrupted()==true)来决定任务是否继续运原创 2016-11-29 17:09:03 · 1617 阅读 · 0 评论 -
completionService的使用
CompletionService接口CompletionService 的功能是以异步的方式一边生产新的任务,一边处理已完成任务的结果,这样可以将执行任务与从处理任务分离开来进行处理。使用submit执行任务,使用take取得已完成的任务,并按照完成这些任务的时间处理它们的结果。接口CompletionService仅有一个实现类 ExecutorCompletionService,构造方法pub原创 2016-11-29 16:33:35 · 457 阅读 · 0 评论 -
Executor与ThreadPoolExecutor
创建线程池创建无界线程池ExecutorService executor = Executors.newCachedThreadPool();创建固定数量的线程池ExecutorService executorService = Executors.newFixedThreadPool(3);创建单一线程的线程池ExecutorService executorService = Exec原创 2016-11-29 11:28:51 · 4140 阅读 · 0 评论 -
java中map的排序问题
java中Map排序问题按key排序public class MapSortDemo { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put("KFC", "kfc"); map.put("W原创 2017-04-13 16:39:16 · 522 阅读 · 0 评论