多线程学习笔记

Executor、ExecutorService和Executors

A:Executor是一个抽象层面的核心接口,将任务的提交过程和执行过程解耦。

B:ExecutorService对executor接口进行了扩展,添加了一些用于生命周期管理的方法,如返回future对象,终止、关闭线程池等方法。

A与B的区别:

1、B是A的子接口

2、A定义execute()方法来接收Runnable接口的对象,
B中的submit方法可以接受runnable接口和callable接口的对象

3、execute方法不返回任何结果,
submit方法可以通过future对象返回运算结果

4、B提供了管理线程池的方法

Executors是一个工具类,提供工厂方法来创建不同类型的线程池


如何正确的停止一个线程:

  • Thread.stop或Thread.susupend(已废弃)
  • 使用interupt()方法
  • 使用条件变量

具体见:

http://ibruce.info/2013/12/19/how-to-stop-a-java-thread/

进程与线程的区别

  1. 线程是进程的子集,一个进程可以有多个线程,每条线程并行执行不同的任务
  2. 不同的进程拥有不同的内存空间,而所有的线程共享同一块内存空间
  3. 每个线程都有单独的栈内存来存储本地数据
  4. 线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程的实际运作单位