前言: 上篇主要介绍了使用线程池的好处以及ExecutorService接口,然后学习了通过Executors工厂类生成满足不同需求的简单线程池,但是有时候我们需要相对复杂的线程池的时候就需要我们自己来自定义一个线程池,今天来学习一下ThreadPoolExecutor,然后结合使用场景定义一个按照 ...
分类:
移动开发 时间:
2016-06-24 09:14:06
阅读次数:
448
前言: 上篇学习了线程Thread的使用,今天来学习一下线程池ExecutorService。 为什么要引入线程池? 每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞争,会导致过多占用系统资源导致系统瘫痪。 不利于扩展 ...
分类:
移动开发 时间:
2016-06-23 08:50:47
阅读次数:
254
看一段测试代码:
package com.wenniuwuren.concurrent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by zhuyb on 16/6/16.
*/
public class newCachedThrea...
分类:
编程语言 时间:
2016-06-17 22:40:27
阅读次数:
292
ExecutorService与ExecutorCompletionService都是java.util.concurrent包的并发处理类,总的来说,ExecutorCompletionService是ExecutorService的功能增强版,ExecutorCompletionService以BlockingQueue<Future<V>>来存放已经完成的任务。也就是说,优先完成的任务..
分类:
编程语言 时间:
2016-06-14 19:48:58
阅读次数:
372
看了下Java Tutorials中的fork/join章节,整理下。 什么是fork/join框架 fork/join框架是ExecutorService接口的一个实现,可以帮助开发人员充分利用多核处理器的优势,编写出并行执行的程序,提高应用程序的性能;设计的目的是为了处理那些可以被递归拆分的任务 ...
分类:
编程语言 时间:
2016-06-13 19:03:36
阅读次数:
196
一 线程的实现: 多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。 MyThread th = new MyThread ...
分类:
其他好文 时间:
2016-06-13 09:57:15
阅读次数:
141
在上一文章中,笔者介绍了线程池及其内部的原理。今天主要讲的也是和线程相关的内容。一般情况下,使用Runnable接口、Thread实现的线程我们都是无法返回结果的。但是如果对一些场合需要线程返回的结果。就要使用用Callable、Future、FutureTask、CompletionService这几个类。Callable只能在ExecutorService的线程池中跑,但有返回结果,也可以通过...
分类:
编程语言 时间:
2016-06-12 10:52:39
阅读次数:
464
我们在并发编程创建线程时,常常是创建一些Runnable对象,然后创建对应的Thread对象执行它们,但是如果程序需要并发执行大量的任务时,需要为每个任务都创建一个Thread,进行管理,这将会影响程序的执行效率,并且创建线程过多将会使系统负载过重。Java 5之后通过了一套Executor框架能够解决这些问题,能够分解任务的创建和执行过程。该框架包括Executor,ExecutorService...
分类:
编程语言 时间:
2016-06-12 03:11:50
阅读次数:
140
监控资源发现,方法内部的线程池关不关闭都无所谓(ExecutorService.shutdown()), 细细想来,也是这个道理:方法跑完的时候方法内所有内部的变量都会被标记为清楚,所以线程池也被标记为清楚了,所以不会占用资源。 ...
分类:
编程语言 时间:
2016-06-03 12:46:54
阅读次数:
192
我们现在在Java中使用多线程通常不会直接用Thread对象了,而是会用到java.util.concurrent包下的ExecutorService类来初始化一个线程池供我们使用。 当我们使用ExecutorService来做多线程处理时,习惯自己维护一个list保存submit的callable ...
分类:
其他好文 时间:
2016-06-01 12:54:54
阅读次数:
125