首页  »  云计算知识  »  什么是线程

什么是线程?

线程是操作系统或软件运行时的最小运算单元,每个线程都可以单独执行一个运行任务。线程包含于进程当中,进程是线程的集合。当操作系统运行时,至少有一个进程会启动,而这个进程中往往包含了多个线程。线程按照运行方式分为幽灵线程、线程组、多线程、同步线程等类型;按运行空间分为用户级线程和内核级线程两种。

新用户享受中国区域 12 个月免费套餐

什么是线程

首页  »  云计算知识  »  什么是线程

什么是线程

什么是线程?

线程是操作系统或软件运行时的最小运算单元,每个线程都可以单独执行一个运行任务。线程包含于进程当中,进程是线程的集合。当操作系统运行时,至少有一个进程会启动,而这个进程中往往包含了多个线程。线程按照运行方式分为幽灵线程、线程组、多线程、同步线程等类型;按运行空间分为用户级线程和内核级线程两种。

新用户享受中国区域 12 个月免费套餐

线程的起源

线程的起源

线程的起源与计算机的发展息息相关。早期的计算机系统是单指令模式,资源利用效率低下。当批处理模式即计算机的多指令模式出现后,计算机资源利用率得到有效提升,但这种模式又经常导致 CPU 陷入等待状态,无法得到充分利用,于是进程出现了。当用户对计算机发出一系列操作指令时,每个进程会将不同的操作储存起来,随时进行切换。但是进程的指令执行效率仍然不够快,无法在同一时刻执行多个任务。为了解决这一问题,技术人员又发明了线程。有了线程以后,每个操作指令对应的任务都能够被划分为多个子任务,由每一个单独的线程负责,而不同的线程可以同时运行,这样计算机的运行效率便得到进一步提升。

线程在其生命周期中的六种状态

线程在其生命周期中的六种状态

NEW 新建_ 线程在其生命周期中的六种状态

NEW 新建

当系统或软件运行时,会发出start指令创建线程,但是线程创建后,不一定会马上进入到运行状态,这种情况即为NEW 新建状态,一般出现在系统或者程序处于待机状态时。

Runnable 可运行_线程在其生命周期中的六种状态

Runnable 可运行

线程创建完毕,处于随时可在电脑系统或者 java 虚拟机中运行的状态,java 虚拟机是软件运行时产生的“工作间”。此时的线程可能正在运行代码,也可能仍处于待机状态,这取决于操作系统处理器此时的工作状态。

Blocked 锁阻塞_线程的状态

Blocked 锁阻塞

线程需要获取软件中的对象锁才能运行。当一个线程试图获取某一个对象锁,而该对象锁正在被另外的线程占用时,该线程将进入到 Blocked 锁阻塞的状态。当另外的线程占用完毕,对象锁被释放出来时,锁阻塞的线程会变为 Runnalbe 可运行的状态。

Waiting 无限等待_线程的状态

Waiting 无限等待

Waiting 无限等待即一个线程进入 Waiting 状态,需要等待另一个线程执行唤醒指令将其唤醒。进入这个状态后的线程是无法自动唤醒的,必须等待另一个线程调用 notify 指令或者 notifyAll 方法才能够被唤醒。Waiting 无限等待状态一般发生在主线程异常,子线程没有按既定程序关闭的情况下。

Timed Waiting 计时等待_线程的状态

Timed Waiting 计时等待

Timed Waiting 计时等待出现在多线程同时运行的情况中。当多个线程运行时,对象锁的数量无法满足所有线程同时运行,因此会有一些线程进入到 Timed Waiting 计时等待的状态,并按顺序依次获取对象锁执行运行指令。

Teminated 被终止_线程的状态

Teminated 被终止

当系统关闭或者程序结束工作时,运行过程中产生的各种线程也会随之停止工作和运行,进入到 Teminated 被终止的状态。这种状态下的线程并不是休眠或待机,而是已经不存在于任何的系统或程序中。

NEW 新建_ 线程在其生命周期中的六种状态

NEW 新建

当系统或软件运行时,会发出start指令创建线程,但是线程创建后,不一定会马上进入到运行状态,这种情况即为NEW 新建状态,一般出现在系统或者程序处于待机状态时。

Runnable 可运行_线程在其生命周期中的六种状态

Runnable 可运行

线程创建完毕,处于随时可在电脑系统或者 java 虚拟机中运行的状态,java 虚拟机是软件运行时产生的“工作间”。此时的线程可能正在运行代码,也可能仍处于待机状态,这取决于操作系统处理器此时的工作状态。

Blocked 锁阻塞_线程的状态

Blocked 锁阻塞

线程需要获取软件中的对象锁才能运行。当一个线程试图获取某一个对象锁,而该对象锁正在被另外的线程占用时,该线程将进入到 Blocked 锁阻塞的状态。当另外的线程占用完毕,对象锁被释放出来时,锁阻塞的线程会变为 Runnalbe 可运行的状态。

Waiting 无限等待_线程的状态

Waiting 无限等待

Waiting 无限等待即一个线程进入 Waiting 状态,需要等待另一个线程执行唤醒指令将其唤醒。进入这个状态后的线程是无法自动唤醒的,必须等待另一个线程调用 notify 指令或者 notifyAll 方法才能够被唤醒。Waiting 无限等待状态一般发生在主线程异常,子线程没有按既定程序关闭的情况下。

Timed Waiting 计时等待_线程的状态

Timed Waiting 计时等待

Timed Waiting 计时等待出现在多线程同时运行的情况中。当多个线程运行时,对象锁的数量无法满足所有线程同时运行,因此会有一些线程进入到 Timed Waiting 计时等待的状态,并按顺序依次获取对象锁执行运行指令。

Teminated 被终止_线程的状态

Teminated 被终止

当系统关闭或者程序结束工作时,运行过程中产生的各种线程也会随之停止工作和运行,进入到 Teminated 被终止的状态。这种状态下的线程并不是休眠或待机,而是已经不存在于任何的系统或程序中。

线程的应用场景

线程的应用场景

单独的一个线程并无实际应用场景,而多个线程的应用场景广泛。多线程使用最多的场景是各类服务器,如 web 服务器或者游戏服务器之类的专用服务器。服务器的后台任务处理、异步处理和分布式计算等操作均通过多线程来实现。同样的,向多个用户批量发送电子邮件、发微博、记录日志等用户对软件的具体操作,也都是通过多线程来实现的。简而言之,所有的软件操作、系统运行都得依靠多线程才能正常使用。多线程的出现大大提升了计算机的操作效率,目前主流的软件开发都是基于多线程。

亚马逊云科技热门云产品

亚马逊云科技热门云产品

Amazon EC2 实例类型

Amazon EC2 实例类型

Amazon EC2 云服务器提供多种经过优化,适用于不同使用案例的实例类型以供选择。

Amazon Lambda

Amazon Lambda

可以为任何类型的应用程序或后端服务运行代码,而且全部都无需管理

Amazon SQS

Amazon SQS

一种完全托管式消息队列服务,让您可以分离和扩展微服务、分布式系统和无服务器应用程序

欢迎加入亚马逊云科技培训中心

从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程

准备好体验亚马逊云科技提供的云服务了吗?

新用户享受中国区域 12 个月免费套餐