Java

进程

指正在运行的程序。确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能。

线程

进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。

单线程:只能同时执行一个任务,有多个任务需要执行时,需要按照顺序逐一执行

多线程:多个任务同时执行

分时调度:每个线程轮流执行相同的时间

抢占式调度:按照优先级执行,优先级相同时随机选择

Thread类

方法

1.start();            开始线程

2.run();                     线程执行的内容

创建线程

1 定义一个类继承Thread

2 重写run方法

3 创建子类对象

4 调用start方法开始线程

1、定义一个类实现Runnable接口

2、重写run方法

3、创建Thread类的对象

4、调用Runnable构造方法传入Thread对象

5、调用Thread类的start方法开始线程

创建对象时可以使用匿名内部类的方式简化代码

两种方法的区别

第二种方式实现Runnable接口避免了单继承的局限性,所以较为常用。实现Runnable接口的方式,更加的符合面向对象,线程分为两部分,一部分线程对象,一部分线程任务。继承Thread类,线程对象和线程任务耦合在一起。一旦创建Thread类的子类对象,既是线程对象,有又有线程任务。实现runnable接口,将线程任务单独分离出来封装成对象,类型就是Runnable接口类型。Runnable接口对线程对象和线程任务进行解耦。

线程池

存储线程的容器,随时取用线程,避免了一直创建线程的繁琐和资源消耗

使用线程池中线程对象的步骤(Runnable接口):

1.创建线程池对象

ExecutorService es=Executors.newFixedThreadPool(线程池容量);

2.创建Runnable接口子类对象

子类名 变量名=new 子类名();               需要传参时,在类中声明成员变量,并写一个有参的构造方法,直接在创建对象时将参数传入

3.提交Runnable接口子类对象

Future<Integer> f=es.submit(变量名);                

4.关闭线程池

es.close();

使用线程池中线程对象的步骤(Callable接口):

创建线程池对象

ExecutorService es=Executors.newFixedThreadPool(线程池容量);

创建Callable接口子类对象

MyCallable r=new MyCallable();

提交Callable接口子类对象

Future<Integer> f=es.submit(r);    

关闭线程池

es.close();

posted @ 2020-11-04 16:46  ldldl  阅读(130)  评论(0)    收藏  举报