# 1 楼答案 在Java程序中,您创建线程,但它们不是由Java单独执行的。Java需要底层操作系统的帮助来执行它们。为了分配微处理器时间并监督所有线程的执行,操作系统配备了线程调度程序。维护线程执行顺序的全部责任在于线程调度器,其中哪个线程应该优先于另一个线程。调度取决于调度器的算法。许多类型的算法都存在,比如抢占式和时间切片以及循环等。这是一个非常复杂的算法,在给定时间内执行多次 调度程序维护一个线程池。当Java线程开始调用start()方法时,它会加入等待线程池 线程状态 1。新状态:创建线程实例后,线程处于该状态,但在start()方法调用之前。此时,线程被视为不活动 2。可运行(准备运行)状态:线程从可运行状态开始其生命周期。线程在调用start()方法后首先进入可运行状态,但线程也可以在运行、等待、睡眠或从阻塞状态返回后返回此状态。在这种状态下,线程正在等待打开处理器 3。运行状态:线程处于运行状态,这意味着该线程当前正在执行。有几种方法可以进入Runnable状态,但只有一种方法可以进入Runnable状态:调度器从Runnable池中选择一个线程 4。死状态:当线程的run()方法完成时,可以将其视为死线程。如果任何线程处于这种状态,这意味着它无法再次运行 5。阻塞:-由于等待另一个线程占用的资源,线程可以进入此状态
# 2 楼答案 我认为这意味着线程执行一系列动作。老实说,这表达了一个非常糟糕的概念 换句话说: 创建一个Thread,理想的情况是传递一个Runnable。(您可以扩展Thread,并覆盖其run方法,但这通常是不受欢迎的。)李> 你打电话给start 调用start的线程继续执行其程序中的下一条语句 run方法在单独的线程中执行,与启动它的线程无关。这里的行为就是我所说的“顺序” 由于以下情况之一,新螺纹最终会终止: 它的run方法正常完成 它的run方法完成时有一个异常 如果它是一个守护进程线程,由于所有非守护进程线程退出,它可以作为JVM终止的一部分终止
# 1 楼答案
在Java程序中,您创建线程,但它们不是由Java单独执行的。Java需要底层操作系统的帮助来执行它们。为了分配微处理器时间并监督所有线程的执行,操作系统配备了线程调度程序。维护线程执行顺序的全部责任在于线程调度器,其中哪个线程应该优先于另一个线程。调度取决于调度器的算法。许多类型的算法都存在,比如抢占式和时间切片以及循环等。这是一个非常复杂的算法,在给定时间内执行多次
调度程序维护一个线程池。当Java线程开始调用
start()
方法时,它会加入等待线程池线程状态
1。新状态:创建线程实例后,线程处于该状态,但在start()方法调用之前。此时,线程被视为不活动
2。可运行(准备运行)状态:线程从可运行状态开始其生命周期。线程在调用
start()
方法后首先进入可运行状态,但线程也可以在运行、等待、睡眠或从阻塞状态返回后返回此状态。在这种状态下,线程正在等待打开处理器3。运行状态:线程处于运行状态,这意味着该线程当前正在执行。有几种方法可以进入Runnable状态,但只有一种方法可以进入Runnable状态:调度器从Runnable池中选择一个线程
4。死状态:当线程的
run()
方法完成时,可以将其视为死线程。如果任何线程处于这种状态,这意味着它无法再次运行5。阻塞:-由于等待另一个线程占用的资源,线程可以进入此状态
# 2 楼答案
我认为这意味着线程执行一系列动作。老实说,这表达了一个非常糟糕的概念
换句话说:
Thread
,理想的情况是传递一个Runnable
。(您可以扩展Thread
,并覆盖其run
方法,但这通常是不受欢迎的。)李>start
start
的线程继续执行其程序中的下一条语句run
方法在单独的线程中执行,与启动它的线程无关。这里的行为就是我所说的“顺序”run
方法正常完成run
方法完成时有一个异常