- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
线程与并行API学习目标.ppt
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 简介并行Collection 简介并行Collection ConcurrentMap是Map的子接口,其定义了putIfAbsent()、remove()与replace()等方法,这些方法都是原子(Atomic)操作 简介并行Collection putIfAbsent()相当于自行于synchronized中進行以下动作: 简介并行Collection remove()相当于自行于synchronized中进行以下动作: 简介并行Collection replace()有两个版本,其一相当于自行于synchronized中进行以下动作: 简介并行Collection replace()另外一个版本相当于你自行于synchronized中进行以下动作: 简介并行Collection ConcurrentHashMap是ConcurrentMap的实作类别 ConcurrentNavigableMap是ConcurrentMap子接口,其实作类别为ConcurrentSkipListMap,可视为支持并行操作的TreeMap版本 * * * * * * * * * * * * * * * * * * * * * * * * * 使用Executor 从JDK5开始,定义了java.util.concurrent.Executor接口,目的在将Runnable的指定与实际如何执行分离 使用Executor 定义一个DirectExecutor,单纯呼叫传入execute()方法的Runnable物件之run()方法: 使用Executor 如果定义ThreadPerTaskExecutor: 使用Executor 使用Executor 线程池这类服务定义在Executor子界面java.util.concurrent.ExecutorService 通用的ExecutorService由抽象类AbstractExecutorService实作 如果需要线程池功能,可以使用子类别java.util.concurrent.ThreadPoolExecutor 使用Executor ThreadPoolExecutor拥有不同建构式可供使用 java.util.concurrent.Executors的newCachedThreadPool()、newFixedThreadPool()静态方法可建构ThreadPoolExecutor实例 使用Executor Executors.newCachedThreadPool()传回的ThreadPoolExecutor实例,会在必要时建立线程 你的Runnable可能执行在新建的线程,或重复利用的线程中 newFixedThreadPool()可指定在池中建立固定数量的线程 这两个方法也都有接受java.util.concurrent.ThreadFactory的版本,你可以在ThreadFactory的newThread()方法中,实作如何建立Thread实例 使用Executor 可使用ThreadPoolExecutor搭配先前的Pages使用: 使用Executor ExecutorService还定义了submit()、invokeAll()、invokeAny()等方法 方法中出现了java.util.concurrent.Future、java.util.concurrent.Callable界面 使用Executor 使用Executor Future定义的行为让你在将来取得结果 可以将想执行的工作交给Future,Future使用另一线程来进行工作,你就可以先忙别的事去 过些时候,再呼叫Future的get()取得结果,如果结果已经产生,get()会直接返回,否则会进入阻断直到结果传回 get()的另一版本则可以指定等待结果的时间,若指定的时间到结果还没产生,就会丢出java.util.concurrent.TimeoutException 以使用Future的isDone()方法,看看结果是否产生 使用Executor Future经常与Callable搭配使用 Callable的作用与Runnable类似,可让你定义想要执行的流程 Runnable的run()方法无法传回值,也无法抛出受检例外,然而Callable的call()方法可以
文档评论(0)