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() 方法启动线程

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    胜浩_ae28阅读 10,571评论 0 23
  • 进程和线程 进程 所有运行中的任务通常对应一个进程,当一个程序进入内存运行时,即变成一个进程.进程是处于运行过程中...
    小徐andorid阅读 7,910评论 3 53
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,125评论 1 18
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,169评论 19 139
  • 再过2天,2017年就将结束了。2017年对我来说是意义特别深重的一年。这一年,我挚爱的妈妈永远地离开了这个世界离...
    echo陈1005阅读 4,179评论 0 1

友情链接更多精彩内容