线程

在这里首先明确一些关于线程的基本概念:

一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码,即可以有多段程序代码同时运行,每个程序至少都有一个线程,即main方法执行的那个线程

线程优先级?

  • 一般来说,高优先级的线程在运行时会具有优先权,但这依赖于线程调度的实现

  • 可以定义线程的优先级,但是这并不能保证高优先级的线程会在低优先级的线程前执行

  • 线程优先级是一个int变量(从1-10),1代表最低优先级,10代表最高优先级

线程调度器(Thread Scheduler)?

线程调度器是一个操作系统服务,它负责为Runnable状态的线程分配CPU时间。一旦我们创建一个线程并启动它,它的执行便依赖于线程调度器的实现。

时间分片(Time Slicing)?

时间分片是指将可用的CPU时间分配给可用的Runnable线程的过程。分配CPU时间可以基于线程优先级或者线程等待的时间。

  • 线程调度并不受到Java虚拟机控制,所以由应用程序来控制它是更好的选择(也就是说不要让你的程序依赖于线程的优先级)。

多线程的上下文切换(context-switching)?

上下文切换是存储和恢复CPU状态的过程,它使得线程执行能够从中断点恢复执行。上下文切换是多任务操作系统和多线程环境的基本特征。