为什么这里的状态变化是什么?为什么这样 Override public void run 线程执行的代码逻辑 Systemoutprintln线程开始执行+getName+getState; try Threadsleep1000; 模拟线程执行耗时操作 catch InterruptedExcept
这段代码创建了一个继承自Thread类的Create1线程对象,并通过start()方法启动了该线程。线程的状态变化如下:
- 创建Create1对象时,线程处于NEW状态。
- 调用start()方法后,线程进入就绪状态,等待获取CPU执行时间片。
- 当线程获取到CPU执行时间片时,线程进入运行状态,开始执行run()方法中的代码逻辑。
- 执行到Thread.sleep(1000)时,线程进入阻塞状态,因为调用了sleep()方法使线程休眠1秒钟。
- 当休眠时间结束后,线程重新进入就绪状态,等待获取CPU执行时间片。
- 当线程再次获取到CPU执行时间片时,继续执行run()方法中剩余的代码逻辑。
- 线程执行结束,进入终止状态。
线程的状态变化是由操作系统内核调度决定的。当线程处于就绪状态时,操作系统会根据一定的调度策略选择一个就绪线程来执行,当线程执行完毕或阻塞时,操作系统会重新选择一个就绪线程来执行。在代码中,通过调用start()方法启动线程,使其进入就绪状态,然后操作系统会根据调度策略选择一个时间片给该线程执行。线程执行完毕后,进入终止状态。在线程的执行过程中,通过调用sleep()方法使线程进入阻塞状态,等待指定的时间后重新进入就绪状态
原文地址: https://www.cveoy.top/t/topic/ipLX 著作权归作者所有。请勿转载和采集!