随笔分类 -  concurrent

摘要:Java 5.0 adds ConcurrentHashMap, a replacement for synchronized hash-based Map implementations, and CopyOnWriteArrayList, a replacement for synchronized List implementations for cases where traversal ... 阅读全文
posted @ 2014-12-08 23:53 长天秋水落霞孤鹜 阅读(193) 评论(0) 推荐(0)
摘要:主要是回答一下面试中可能会碰到的问题。慢慢的积累一下。一个星期以后,补全。 阅读全文
posted @ 2014-12-05 22:13 长天秋水落霞孤鹜 阅读(103) 评论(0) 推荐(0)
摘要:概述 多任务的处理在现在的计算机中可以说是“标配”了,在许多的情况下,让计算机同时做几件事情,不仅是因为计算机的运算能力的强大,还有一个重要的原因是:cpu的运算速度和计算机的存储以及通讯子系统的相差的比较大,大部分的时间都花在了磁盘I/O,网络通信和数据库访问上面了,为了充分的利用资源,具体的说就是为了充分的利用cpu的“计算资源”。 高并发的一个典型的应用场景就是:一个服务端同时对多个客户端提... 阅读全文
posted @ 2014-12-02 19:23 长天秋水落霞孤鹜 阅读(217) 评论(0) 推荐(0)
摘要:1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线程提供了卓越的支持,它也是一个很好的卖点。欲了解更多详细信息请点击这里。 2) 线程和进程有什么区别? 线程... 阅读全文
posted @ 2014-11-26 21:42 长天秋水落霞孤鹜 阅读(152) 评论(0) 推荐(0)
摘要:wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。 这三个方法最终调用的都是jvm级的native方法。随着jvm运行平台的不同可能有些许差异。 •如果对象调用了wait方法就会使持有该对象的线程把该对象的控制权交出去,然后处于等待状态。 •如果对象调用了notify方法就会通知某个正在等待这个对象的控制权的线程可以继续运行。 •如果... 阅读全文
posted @ 2014-11-24 21:33 长天秋水落霞孤鹜 阅读(365) 评论(0) 推荐(0)
摘要:InvokeAny 以及 InvokeAll 解释清楚以后,我们最后的一部是关于executor的执行的过程,这个实在线程池中执行的,要想弄明白executor的执行的过程,必须对java对应的线程池进行说明,一般的线程池在前面已经说过,通过Executors创建 executorService接口,真正执行的是我们在(五)里面说的abstractExecutorService的子类ThreadP... 阅读全文
posted @ 2014-09-22 17:51 长天秋水落霞孤鹜 阅读(256) 评论(0) 推荐(0)
摘要:invokeAll 说完以后,我们来看AbstractExecutorService的invokeAny方法,这个方法前面有代码说明过,与invokeAll不同的是,在给定的任务中,如果某一个任务完成(没有异常抛出),则返回任务执行的结果。这点从方法的返回值上面也能看出来。并不要求所有的任务全部的完成,只要一个完成(没有异常)即可。JDK的说明: T invokeAny(Collection> ... 阅读全文
posted @ 2014-09-19 14:16 长天秋水落霞孤鹜 阅读(176) 评论(0) 推荐(0)
摘要:承接上面 上面的submit方法,与之相关联的有两个方法invokeAll 和invokeAny 的源码,我们来看一下这两个方法: 首先是invokeAll的简单的,没有时间限制的方法,JDK说明,源码如下: List> invokeAll(Collection> tasks) 执行给定的任务,当所有任务完成时,返回保持任务状态和结果的 Future 列表。 public ... 阅读全文
posted @ 2014-09-16 13:14 长天秋水落霞孤鹜 阅读(158) 评论(0) 推荐(0)
摘要:接着说 线程池,使用java自带的线程池,一般的情况下线程池对应的实现类是ThreadPoolExecutor,当然不排除自己来写一个线程池,扯远了,ThreadPoolExecutor 扩展自抽象类AbstractExecutorService,其中AbstractExecutorService 默认的实现了: 默认的实现的方法中首先我们看看,上面我们说到的submit()方法: 源代码: p... 阅读全文
posted @ 2014-09-15 15:29 长天秋水落霞孤鹜 阅读(198) 评论(0) 推荐(0)
摘要:主要的说明承接上面的InvokeAny/All 的说明,主要是代码的说明,接下来会对源码的说明: import java.util.concurrent.Callable; /* * 这是一个可能会在执行过程中,抛出空指针异常的任务。 * */ public class ExceptionCallable implements Callable { private String na... 阅读全文
posted @ 2014-09-14 15:22 长天秋水落霞孤鹜 阅读(199) 评论(0) 推荐(0)
摘要:java的1.5后,JDK 增加了一个包Concurrent,为我们的多线程程序的编写带来了很大的方便。这个主要是把以前使用多线程的知识梳理一下。 首先需要用到的类是java.util.concurrent.Executors, 由它来生成线程执行器java.util.concurrent.ExecutorService,然后根据需要可以用不同的方式运行线程,例如:单个任务可以用executorS... 阅读全文
posted @ 2014-09-14 14:56 长天秋水落霞孤鹜 阅读(187) 评论(0) 推荐(0)