2018-10-12 线程学习日志

概念

程序(Program)是对数据描述与操作的代码集合,如:Word、暴风影音等应用程序。是一个静态的概念

进程(Process)是程序的一次动态的执行过程,它对应了从代码加载、执行至执行完毕的一个完整的过程,这个过程也是进程本身从产生、发展至消亡的过程。是一个动态概念。

进程的特点:

进程是系统运行程序的基本单位。

每一个进程都有自己独立的一块内存空间、一组系统资源。

每一个进程的内部数据和状态都是完全独立的。

线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程内执行。

进程按处理级别可分为:

核心级线程

核心级线程是和系统任务相关的线程,它负责处理不同进程之间的多个线程。允许不同进程中的线程按照同一相对优先掉队的方法对线程进行调度,使它们有条不紊地工作,可以发挥处理器的并发优势,以充分利用计算机的软/硬件资源

用户级线程

在开发程序时,由于程序的需要而编写的线程即用户级线程,这些线程的创建、执行和消亡都是在编写应用程序时进行控制的。对于用户级别线程的切换,通常发生在一个应用程序的诸多线程之间,如迅雷中的多线程下载就属于用户级线程。

多线程的优势

多线程可以带来更好的用户体验,避免因程序执行过慢而导致出现计算机死机或者白屏的情况。

多线程程序可以最大限度地提高计算机系统的利用率,如迅雷的多线程下载。

编写线程类

使用一个线程的过程有4个步骤:

定义一个线程,同时指明这个线程所有执行的代码,即期望的完成的功能。

创建线程对象。

启动线程。

终止线程。

定义一个线程类通常有两种方法,分别是继承 java.lang.Thread 类和实现 java.lang.Runnable 接口

使用 Thread 类创建线程

方    法说      明

void run()执行任务操作的方法

void start()使该线程开始执行

void sleep(long millis)在指定的毫秒数内让当前正在只想的线程休眠(暂停执行)

String getName()返回该线程的名称

int getPriority()返回线程的优先级

void setPriority(int newPriority)更改线程的优先级

Thread.State getState()返回该线程的状态

boolean isAlive()测试线程是否处于活动状态

void join()等待该线程终止

void interrupt()中断线程

void yield()暂停当前正在执行的线程对象,并执行其他线程。

使用 Runnable 接口创建线程

定义类实现 Runnable 接口,并实现 Runnable 的 run() 方法,在 run() 方法中输出数据。

创建线程对象

调用 start() 方法启动线程

你可能感兴趣的:(2018-10-12 线程学习日志)