ExecutorService是Java并发包里面的一个线程池服务
 
线程池的优点
  • 复用已有的线程,消除任务中创建线程的开销
  • 通过优化线程的数量,提高性能,保证处理器一直处于忙的状态,而不必创建这么多的线程,使程序耗尽资源
 
首先可以带着以下观点一步一步看,之所以划掉是因为第二条理论不成立...
 
在18.4.2的练习中,我发现用Thread对象来执行一个线程和线程池管理执行线程的一个有趣的特点:
  • Thread对象是自发销毁的,或由GC或由什么玩意儿,自发的回收线程对象(当线程中的任务执行完成时)。
  • ExecutorService,用线程池来管理线程的话,得注意shutdown掉线程池,因为即使线程池中的线程对象执行完自身任务之后,依然处于running状态,他们已经"身不由己"了;并且,当主线程已经执行完,我们并没有手动关闭线程池的话,ExecutorService依然存在,里面的线程对象,还有线程池对象,甚至还多出一个destroyVM的执行线程都会一直running,这是很可怕的...
 
用Thread对象来执行线程
 
 
使用线程池(ExecutorService)来管理线程
 
 
 
 
 
嗯。。我的生产消费者还没写呢。。同学叫撸了。。尼玛。。我是个败类。。匿了。。

Thread和ExecutorService(一)的更多相关文章

  1. java高级---->Thread之ExecutorService的使用

    今天我们通过实例来学习一下ExecutorService的用法.我徒然学会了抗拒热闹,却还来不及透悟真正的冷清. ExecutorService的简单实例 一.ExecutorService的简单使用 ...

  2. Java基础学习笔记: 多线程,线程池,同步锁(Lock,synchronized )(Thread类,ExecutorService ,Future类)(卖火车票案例)

    多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线 ...

  3. ExecutorService介绍2

    Thread和ExecutorService的区别 使用Thread,当子线程执行结束后,主线程如果没有其他执行任务,主线程会终止. /** * Created by litao on 15/10/7 ...

  4. Java Thread 如何处理未捕获的异常?

    Java Thread是不允许异常抛出到本线程之外的,Runnable接口的public abstract void run()是不允许throws Exception的,这在编译时就通不过. 线程异 ...

  5. jdk 1.8 Executors

    Class Executors java.lang.Object java.util.concurrent.Executors public class Executors extends Objec ...

  6. [Java Basics] multi-threading

    1, Process&Threads Most implementations of the Java virtual machine run as a single process. Thr ...

  7. java.util.concurrent包API学习笔记

    newFixedThreadPool 创建一个固定大小的线程池. shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭. awaitTermination():用于等待子线程结束, ...

  8. java分割excel文件可用jxl

    excel导入是经常使用到的功能,如果文件数据量大的话还是建议分割后导入,java常用的API是poi和jxl,我采用的是jxl,那么让我们来看下怎么用jxl来实现分割. 需要在pom中导入jxl的包 ...

  9. java线程池的创建使用

    利用java的多线程编程可以大大的提高系统的并发运行效率,线程越多并发执行的任务就越多,但是并不意味着效率会一直提高,相反会得到适得其反的效果. java中的多线程编程一共有三种方法: 继承Threa ...

随机推荐

  1. Art of Unit Test (1) - Breaking Dependency

    #!/usr/bin/env python # encoding: utf-8 import unittest """ the simplyest way to test ...

  2. 5 Logistic回归(二)

    5.2.4 训练算法:随机梯度上升 梯度上升算法:在每次更新回归系数时都需要遍历整个数据集,在数十亿样本上该算法复杂度太高. 改进方法:随机梯度上升算法:一次仅用一个样本点更新回归系数. 由于可以在新 ...

  3. listbox横向排列

    在Listbox中横向显示CheckBox 前台代码 <ListBox Height=" > <StackPanel x:Name="sp" Orien ...

  4. spring mybatis 整合问题Error parsing Mapper XML. Cause: java.lang.NullPointerException

    14:30:40,872 DEBUG SqlSessionFactoryBean:431 - Parsed configuration file: 'class path resource [myba ...

  5. log实例

    配置详解见2014.10月篇 log4j的pom.xml <dependency> <groupId>log4j</groupId> <artifactId& ...

  6. __I、__O 、__IO volatile是什么?怎么用? .

    这是ST库里面的宏定义,定义如下: #define __I volatile const /*!< defines 'read only' permissions */ #define __O ...

  7. Windows 8 DirectX 和Xaml UI 混合处理方案

    原文 http://www.cnblogs.com/chenkai/archive/2012/11/29/2794983.html [如果不想读这么长问题描述和通用的解决方案. 可以直接skip 这段 ...

  8. MyBatis 最常见错误,启动时控制台无限输出日志

    你是否遇到过下面的情况,控制台无限的输出下面的日志: Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImp ...

  9. Android Afinal框架学习(二) FinalActivity 一个IOC框架

    框架地址:https://github.com/yangfuhai/afinal 相应的源代码: net.tsz.afinal.annotation.view.* FinalActivity Fina ...

  10. 使用Spire PDF for .NET将HTML转换成PDF文档

    目录 开发环境说明 Spire PDF for .NET (free edition)体验 资源下载 开发环境说明 Microsoft Visual Studio 2013 Ultimate Edit ...